创建Netty服务端的几个步骤:
1.创建服务类
ServerBootstrap bootstrap=new ServerBootstrap();
2.创建监听端口线程和数据读写线程
ExecutorService boss= Executors.newCachedThreadPool();
ExecutorService worker=Executors.newCachedThreadPool();
3.设置服务niosocket工厂,将工厂和监听及读写线程绑定,同时将服务类和工厂绑定
bootstrap.setFactory(new NioServerSocketChannelFactory(boss,worker));
4. 设置管道工厂,将消息处理类放到工厂,消息编码和解码功能加入与否都可以
//设置管道工厂
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline pipeline= Channels.pipeline();
//将读到的消息解码
pipeline.addLast("decoder",new StringDecoder());
//将发送的消息编码
pipeline.addLast("encoder",new StringEncoder());
//消息处理类 消息处理类要继承自SimpleChannelHandler
pipeline.addLast("helloHandler",new HelloHandler());
return pipeline;
}
});
5.服务端绑定端口即可开始监听
bootstrap.bind(new InetSocketAddress(10010));
简单介绍下,消息处理类SimpleChannelHandler
messageReceived接收消息
channelConnected新连接,通常用来检测IP是否是黑名单
channelDisconnected链接关闭,可以在用户断线的时候清除用户的缓存数据等
channelDisconnected与channelClosed的区别
channelDisconnected只有在连接建立后断开才会调用
channelClosed无论连接是否成功都会调用关闭资源