netty (3) 채팅 서버 만들어보자!

netty (3) 채팅 서버 만들어보자! 이번에는 배운걸 기준으로 채팅 서버를 만들어 볼 예정이다. 아주 간단하게 메시지를 보내는거와 귓속말을 할 수 있는 서비스를 만들어보자. public class ChatNettyServer { private static final ChatNettyServiceHandler SHARED = new ChatNettyServiceHandler(); public static void main(String[] args) { EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootstrap(); b.group(bossGroup, workerGroup) .channel(NioServerSocketChannel.class) .childHandler(new ChannelInitializer<SocketChannel>() { protected void initChannel(SocketChannel ch) throws Exception.. Read More

netty (2) 이벤트 핸들러

netty 이번엔 이벤트 핸들러에 대해 알아보자 ChannelInboundHandlerAdapter 클래스는 ChannelInboundHandler 인터페이스를 사용한 어댑터이다. 실질적인 구현에 대한 로직은 없다. 아래는 ChannelInboundHandler 인터페이스의 내용이다. void channelRegistered(ChannelHandlerContext ctx) throws Exception; void channelUnregistered(ChannelHandlerContext ctx) throws Exception; void channelActive(ChannelHandlerContext ctx) throws Exception; void channelInactive(ChannelHandlerContext ctx) throws Exception; void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception; void channelReadComplete(ChannelHandlerContext ctx) throws Exception; void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception; void channelWritabilityChanged(ChannelHandlerContext ctx) throws Exception; void exceptionCaught(ChannelHandlerContext ctx, Throwable cause).. Read More

netty (1)

netty 예전에 책을 샀는데 쓸일이 있을 것도 같아서(혹은 vertx) 공부해본다. 책에 있는 내용을 정리 해본다. 블로킹과 논블러킹 블로킹은 요청한 작업이 성공하거나 에러가 발생하기 전까지 응답을 해주지 않는다. 논블로킹은 성공여부와 상관없이 바로 결과를 돌려주는 것을 말한다. 간단하게(?) 알아보자 public class BlockingServer { public static void main(String[] args) throws IOException { new BlockingServer().run(); } private void run() throws IOException { ServerSocket serverSocket = new ServerSocket(8080); System.out.println(“접속 대기중”); while (true) { Socket socket.. Read More