基于Netty实时通信的简单案例实现
1 案例说明
多个客户端与服务器端建立websocket连接,服务器端将收到的客户端消息发送给所有与服务器端建立连接的客户端,相当于直播间的群聊功能。
当一个客户端发送消息时,所有客户端都将收到消息。并且保证实时性。
2 服务器端搭建
建立maven项目,引入Netty依赖:
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.42.Final</version>
</dependency>
编写服务器端
package maolaoke.top.netty.webSocket;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
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.codec.http.websocketx.WebSocketServerProtocolHandler;
import io.netty.handler.stream.ChunkedWriteHandler;
public class WebSocketServer {
public static void main(String[] args) throws InterruptedException {
//定义两个线程组,采用reactor主从模式,bossGroup负责处理连接请求,WorkerGroup负责处理业务请求。
//默认是cpu核心数*2个线程去处理
NioEventLoopGroup bossGroup = new NioEventLoopGroup();
NioEventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap serverBootstrap = new ServerBootstrap();
serverBootstrap.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel