1 Star 0 Fork 91

rateyu/websocket_chat_room

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MulanPSL-1.0

什么是Netty ?

Netty是由Jboss提供的一款著名的开源框架,常用于搭建 RPC中的TCP服务器、Websocket服务器,甚至是类似Tomcat的Web服务器,反正就是各种网络服务器,在处理高并发的项目中,有奇用!功能丰富且性能良好,基于Java中NIO的二次封装,具有比原生NIO更好更稳健的体验。

关于Netty 原理,请参见 《Netty Zookeeper Redis 高并发实战》 一书

为什么要使用 Netty 替代 Tomcat?

很多项目,都需要基于 Websocket 协议做在线客服、在线推送、在线聊天,虽然 Tomcat 内置支持 Websocket 协议,但是由于 Tomcat 的吞吐量、连接数都很低,作为测试是可以的。在生产环境,一定需要使用高吞吐量、高连接数的 Netty 服务器进行替代

之所以 Netty 性能高,因为其使用的是 Reactor 反应器模式。关于反应器模式原理,请参见 《Netty Zookeeper Redis 高并发实战》 一书。

Netty+WS 在线聊天(在线推送)功能演示

聊天过程gif 演示: 在这里插入图片描述

聊天示意图: 在这里插入图片描述

Springboot + Netty + websocket 项目结构

在这里插入图片描述

Netty 服务启动

Netty搭建的服务器基本上都是差不多的写法:

绑定主线程组和工作线程组,这部分对应架构图中的事件循环组。其原理,,请参见 《Netty Zookeeper Redis 高并发实战》 一书。

重点就是ChannelInitializer的配置,以异步的方式启动,最后是结束的时候关闭线程组。

下面是用 Springboot + Netty + websocket 实战的逻辑:

  • 使用 Json 传递实体消息;

  • ServerSession 存储了每个会话,保存对 Channel和 User,使用User 表示连接上来用户

  • 前端要求填入用户和房间(群组)后,模拟登录,并返回用户列表。进入后可以发送群组消息。

Springboot + Netty + websocket 实战 的学习重点:

  • 报文处理器
  • 业务处理器
  • 会话的管理

Netty的开发,是有固定套路的,具体请参见 疯狂创客圈 经典图书 : 《Netty Zookeeper Redis 高并发实战》 面试必备 + 面试必备 + 面试必备

img

空文件

简介

Netty+WebSocket 在线聊天、在线推送,学习案例 展开 收起
Java
MulanPSL-1.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/rateyu/websocket_chat_room.git
git@gitee.com:rateyu/websocket_chat_room.git
rateyu
websocket_chat_room
websocket_chat_room
master

搜索帮助