Awesome Open Source
Awesome Open Source

HappyChat

基于Netty实现的WebSocket聊天室,实现的功能如下:

  1. 支持昵称登录;
  2. 支持多人同时在线;
  3. 同步显示在线人数;
  4. 支持文字和表情的内容;
  5. 浏览器与服务器保持长连接,定时心跳检测;

服务器

服务器端使用Netty作为通信框架,支持客户端通过WebSocket通信。服务器会检测链路是否处于空闲,如果60秒内没有收到客户端的任何消息,那么服务器会主动关闭该链路。

为保证链路的可用性,服务器会定时发送Ping消息给客户端,客户端收到Ping消息后,必须回一个Pong消息响应,避免链路由于空闲而被关闭。

客户端连接服务器之后,需要提供昵称给服务器,服务器保存每一个用户的昵称和相关的链路信息,用于后续的聊天显示。

客户端发送聊天消息到服务器之后,服务器不会存储聊天消息,而是直接转发给其它的客户端。

客户端

由于是通过WebSocket协议来接入,所以浏览器作为客户端的话,必须支持WebSocket协议,现在项目中已经提供了Html页面的客户端,访问地址如下:
http://chat.wolfbe.com
在项目的doc文件夹下包含了客户端的HTML源码,有兴趣的童鞋可以参考一下。

协议

协议比较简单,所有的消息都一个Json字符串,格式如下:
head | body | extend

  • head作为头部,用int类型存储,4个字节;
  • body 消息的有效载体,用string类型存储,长度无限度;
  • extend 协议的扩展字段,用map类型存储;

    由于在解码消息时使用的是Netty自带的WebSocket的解码器,只支持文本帧的消息,解码出来的都是一个完整的帧消息,即上面格式的消息,所以协议上没有用长度字段。



交流

如果有兴趣交流Netty相关知识,可以加入Netty联盟群:379119816

赞助

如果觉得项目还不错,想要表达些什么的话,可以上爱淘汇:http://itao.wolfbe.com 领淘宝天猫的优惠券,领取优惠券再下单可以省不少钱喔。你们使用这些优惠券购买东西时,我也可以得到一些佣金的,多谢支持!!!



Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
java (30,656
websocket (458
netty (149
nio (33
chatroom (27

Find Open Source By Browsing 7,000 Topics Across 59 Categories