//package org.springblade.modules.webscoket;
|
//import io.netty.bootstrap.ServerBootstrap;
|
//import io.netty.channel.ChannelFuture;
|
//import io.netty.channel.ChannelInitializer;
|
//import io.netty.channel.ChannelOption;
|
//import io.netty.channel.EventLoopGroup;
|
//import io.netty.channel.nio.NioEventLoopGroup;
|
//import io.netty.channel.socket.SocketChannel;
|
//import io.netty.channel.socket.nio.NioServerSocketChannel;
|
//import io.netty.handler.codec.http.HttpObjectAggregator;
|
//import io.netty.handler.codec.http.HttpServerCodec;
|
//import io.netty.handler.logging.LogLevel;
|
//import io.netty.handler.logging.LoggingHandler;
|
//import io.netty.handler.stream.ChunkedWriteHandler;
|
//
|
//public class WebSocketServer {
|
// private int port = 9034;
|
//
|
// public WebSocketServer(int port) {
|
// bind(port);
|
// }
|
//
|
// public void bind(int port) {
|
// Thread thread = new Thread(new Runnable() {
|
// @Override
|
// public void run() {
|
// EventLoopGroup bossGroup = new NioEventLoopGroup();
|
// EventLoopGroup workerGroup = new NioEventLoopGroup();
|
// try {
|
// ServerBootstrap serverBootstrap = new ServerBootstrap();
|
// serverBootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
|
// .handler(new LoggingHandler(LogLevel.INFO))
|
// //保持连接
|
// .childOption(ChannelOption.SO_KEEPALIVE, true)
|
// .childHandler(new ChannelInitializer<SocketChannel>() {
|
// @Override
|
// protected void initChannel(SocketChannel ch) {
|
//// ch.pipeline().addLast("logging",new LoggingHandler("DEBUG"));//设置log监听器,并且日志级别为debug,方便观察运行流程
|
// ch.pipeline().addLast("http-codec", new HttpServerCodec());//设置解码器
|
// ch.pipeline().addLast("aggregator", new HttpObjectAggregator(65536));//聚合器,使用websocket会用到
|
// ch.pipeline().addLast("http-chunked", new ChunkedWriteHandler());//用于大数据的分区传输
|
// ch.pipeline().addLast("handler", new WebSocketHandler());//自定义的业务handler
|
// }
|
// });
|
//
|
// ChannelFuture channelFuture = serverBootstrap.bind(port).sync();
|
// System.out.println("WebSocketServer启动成功");
|
// channelFuture.channel().closeFuture().sync();
|
// } catch (Exception e) {
|
// e.printStackTrace();
|
// } finally {
|
// bossGroup.shutdownGracefully();
|
// workerGroup.shutdownGracefully();
|
// }
|
// }
|
// });
|
// thread.start();
|
// }
|
//}
|