45 lines
1.8 KiB
Java
45 lines
1.8 KiB
Java
package cn.itcast.server;
|
|
|
|
import cn.itcast.protocol.MessageCodecSharable;
|
|
import cn.itcast.protocol.ProcotolFrameDecoder;
|
|
import io.netty.bootstrap.ServerBootstrap;
|
|
import io.netty.channel.Channel;
|
|
import io.netty.channel.ChannelInitializer;
|
|
import io.netty.channel.nio.NioEventLoopGroup;
|
|
import io.netty.channel.socket.SocketChannel;
|
|
import io.netty.channel.socket.nio.NioServerSocketChannel;
|
|
import io.netty.handler.codec.LengthFieldBasedFrameDecoder;
|
|
import io.netty.handler.logging.LogLevel;
|
|
import io.netty.handler.logging.LoggingHandler;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
@Slf4j
|
|
public class ChatServer {
|
|
public static void main(String[] args) {
|
|
NioEventLoopGroup boss = new NioEventLoopGroup();
|
|
NioEventLoopGroup worker = new NioEventLoopGroup();
|
|
LoggingHandler LOGGING_HANDLER = new LoggingHandler(LogLevel.DEBUG);
|
|
MessageCodecSharable MESSAGE_CODEC = new MessageCodecSharable();
|
|
try {
|
|
ServerBootstrap serverBootstrap = new ServerBootstrap();
|
|
serverBootstrap.channel(NioServerSocketChannel.class);
|
|
serverBootstrap.group(boss, worker);
|
|
serverBootstrap.childHandler(new ChannelInitializer<SocketChannel>() {
|
|
@Override
|
|
protected void initChannel(SocketChannel ch) throws Exception {
|
|
ch.pipeline().addLast(new ProcotolFrameDecoder());
|
|
ch.pipeline().addLast(LOGGING_HANDLER);
|
|
ch.pipeline().addLast(MESSAGE_CODEC);
|
|
}
|
|
});
|
|
Channel channel = serverBootstrap.bind(9020).sync().channel();
|
|
channel.closeFuture().sync();
|
|
} catch (InterruptedException e) {
|
|
// log.error("server error", e);
|
|
} finally {
|
|
boss.shutdownGracefully();
|
|
worker.shutdownGracefully();
|
|
}
|
|
}
|
|
}
|