聊天室 Chat Room V1.0 (SpringBoot + Netty + H5 + WebSocket + 原生JS)

1.Chat Room 展示


2.Chat Room 简介

本聊天室Chat Room为一款多人在线聊天产品,发布V1.0版本,包含多人在线聊天、在线人数、在线状态、心跳检测、断网重连等功能,业务及技术追求纯净简洁设计理念,ON THE MOVE~


3.Chat Room 开发

  • 环境准备

硬件:DELL XPS      

软件:Windows10、Idea2017、Maven3.5.0、Java8、SpringBoot2.4.0、netty4.1.24、IE11浏览器

  • 服务端  -(SpringBoot + Netty)

1.pom.xml


io.nettynetty-all4.1.24.Final

io.nettynetty-codec-http4.1.24.Final

2.WebSocketServer.java

/*** WebSocketServer* @author LJS* @date 2020/11/25*/
public class WebSocketServer {public static void start(int port) {// 引导类ServerBootstrap serverBootstrap = new ServerBootstrap();// 监听线程组(客户端请求)NioEventLoopGroup bossGroup = new NioEventLoopGroup();// 处理线程组(客户端请求业务逻辑、读写等处理)NioEventLoopGroup workerGroup = new NioEventLoopGroup();try {// 引导服务器的启动工作serverBootstrap// 线程组角色配置.group(bossGroup, workerGroup)// 服务端的IO模型配置(BIO: [OioServerSocketChannel.class]、NIO:[NioServerSocketChannel.class]).channel(NioServerSocketChannel.class).childHandler(new WebSocketServerInitializer());// 用于启动server,同时启动方式为同步ChannelFuture channelFuture = serverBootstrap.bind(port).sync();System.out.println("Chat Room Server start success!!!");// 监听关闭的channel,设置同步方式channelFuture.channel().closeFuture().sync();} catch (InterruptedException e) {System.err.println("Chat Room Server start fail: " + e.getMessage());} finally {bossGroup.shutdownGracefully();workerGroup.shutdownGracefully();System.out.println("Chat Room Server shutdown success!!!");}}}

3.WebSocketServerInitializer.java 

/*** WebSocketServerInitializer* @author LJS* @date 2020/11/25*/
public class WebSocketServerInitializer extends ChannelInitializer {@Overrideprotected void initChannel(SocketChannel ch) throws Exception {// 获取流水线ChannelPipeline pipeline = ch.pipeline();// websocket基于http协议,所以要有http编解码器pipeline.addLast(new HttpServerCodec());// 对写大数据的支持pipeline.addLast(new ChunkedWriteHandler());// 对httpMessage进行整合,聚合成FullHttpRequest或FullHttpResponsepipeline.addLast(new HttpObjectAggregator(1024 * 64));// 心跳检测,读超时时间设置为30s,0表示不监控ch.pipeline().addLast(new IdleStateHandler(30, 30, 30, TimeUnit.SECONDS));// 自定义WebSocket handlerpipeline.addLast(new WebSocketHandler());


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部