{"id":13487159,"url":"https://github.com/beyondfengyu/HappyChat","last_synced_at":"2025-03-27T21:31:57.143Z","repository":{"id":37821561,"uuid":"79000102","full_name":"beyondfengyu/HappyChat","owner":"beyondfengyu","description":"基于Netty实现的WebSocket聊天室，支持几万人同时在线聊天","archived":false,"fork":false,"pushed_at":"2017-10-26T06:29:48.000Z","size":417,"stargazers_count":612,"open_issues_count":9,"forks_count":196,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-03-22T02:08:02.307Z","etag":null,"topics":["chatroom","netty","nio","websocket"],"latest_commit_sha":null,"homepage":"http://www.wolfbe.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/beyondfengyu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-15T05:18:24.000Z","updated_at":"2025-03-12T03:13:27.000Z","dependencies_parsed_at":"2022-07-20T00:48:19.838Z","dependency_job_id":null,"html_url":"https://github.com/beyondfengyu/HappyChat","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beyondfengyu%2FHappyChat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beyondfengyu%2FHappyChat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beyondfengyu%2FHappyChat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/beyondfengyu%2FHappyChat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/beyondfengyu","download_url":"https://codeload.github.com/beyondfengyu/HappyChat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245927335,"owners_count":20695217,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chatroom","netty","nio","websocket"],"created_at":"2024-07-31T18:00:56.061Z","updated_at":"2025-03-27T21:31:56.391Z","avatar_url":"https://github.com/beyondfengyu.png","language":"Java","funding_links":[],"categories":["Java"],"sub_categories":[],"readme":"# HappyChat\n基于Netty实现的WebSocket聊天室，实现的功能如下：\n\u003cbr\u003e\n1. 支持昵称登录；\u003cbr\u003e\n2. 支持多人同时在线；\u003cbr\u003e\n3. 同步显示在线人数；\u003cbr\u003e\n4. 支持文字和表情的内容；\u003cbr\u003e\n5. 浏览器与服务器保持长连接，定时心跳检测；\n\u003cbr\u003e\u003cbr\u003e\n## 服务器\n服务器端使用Netty作为通信框架，支持客户端通过WebSocket通信。服务器会检测链路是否处于空闲，如果60秒内没有收到客户端的任何消息，那么服务器会主动关闭该链路。\u003cbr\u003e\u003cbr\u003e\n为保证链路的可用性，服务器会定时发送Ping消息给客户端，客户端收到Ping消息后，必须回一个Pong消息响应，避免链路由于空闲而被关闭。\u003cbr\u003e\u003cbr\u003e\n客户端连接服务器之后，需要提供昵称给服务器，服务器保存每一个用户的昵称和相关的链路信息，用于后续的聊天显示。\u003cbr\u003e\u003cbr\u003e\n客户端发送聊天消息到服务器之后，服务器不会存储聊天消息，而是直接转发给其它的客户端。\n\u003cbr\u003e\u003cbr\u003e\n## 客户端\n由于是通过WebSocket协议来接入，所以浏览器作为客户端的话，必须支持WebSocket协议，现在项目中已经提供了Html页面的客户端，访问地址如下：\u003cbr\u003e\n[http://chat.wolfbe.com](http://chat.wolfbe.com \"嗨皮聊天室 | WOLFBE.COM\")\n\u003cbr\u003e\n在项目的doc文件夹下包含了客户端的HTML源码，有兴趣的童鞋可以参考一下。\n\u003cbr\u003e\n\u003cbr\u003e\n## 协议\n协议比较简单，所有的消息都一个Json字符串，格式如下：\u003cbr\u003e\n`head | body | extend`\u003cbr\u003e\n\n* head作为头部，用int类型存储，4个字节；\n* body 消息的有效载体，用string类型存储，长度无限度；\n* extend 协议的扩展字段，用map类型存储；\n\u003cbr\u003e\u003cbr\u003e\n由于在解码消息时使用的是Netty自带的WebSocket的解码器，只支持文本帧的消息，解码出来的都是一个完整的帧消息，即上面格式的消息，所以协议上没有用长度字段。\n\n\u003cbr\u003e\u003cbr\u003e\n## 交流\n如果有兴趣交流Netty相关知识，可以加入**Netty联盟群：379119816**\n\u003cbr\u003e\n\u003cbr\u003e\n## 赞助\n如果觉得项目还不错，想要表达些什么的话，可以上[爱淘汇：http://itao.wolfbe.com](http://itao.wolfbe.com) 领淘宝天猫的优惠券，领取优惠券再下单可以省不少钱喔。你们使用这些优惠券购买东西时，我也可以得到一些佣金的，多谢支持！！！\n\u003cbr\u003e\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeyondfengyu%2FHappyChat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbeyondfengyu%2FHappyChat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbeyondfengyu%2FHappyChat/lists"}