All Projects → beyondfengyu → Happychat

beyondfengyu / Happychat

Licence: apache-2.0
基于Netty实现的WebSocket聊天室,支持几万人同时在线聊天

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Happychat

T Io
解决其它网络框架没有解决的用户痛点,让天下没有难开发的网络程序
Stars: ✭ 1,331 (+199.1%)
Mutual labels:  nio, websocket, netty
netty-in-action-cn
Netty In Action 中文版
Stars: ✭ 1,389 (+212.13%)
Mutual labels:  netty, nio
xpllyn
个人网站项目。使用spring-boot搭建,集合了博客、书籍下载、留言、github page查询、Netty+WebSocket搭建的Web网页聊天室等功能。其中github page查询工具使用了github的api,Web聊天室使用Netty+Websocket+Redis+MySQL搭建服务,使用Shiro安全框架实现身份验证/登录,采用MySql作为网站的数据库,使用Redis用于聊天记录缓存,实现了群聊、单聊、查询用户、添加好友、聊天记录等功能。
Stars: ✭ 21 (-95.28%)
Mutual labels:  netty, chatroom
Cookbook
🎉🎉🎉JAVA高级架构师技术栈==任何技能通过 “刻意练习” 都可以达到融会贯通的境界,就像烹饪一样,这里有一份JAVA开发技术手册,只需要增加自己练习的次数。🏃🏃🏃
Stars: ✭ 428 (-3.82%)
Mutual labels:  nio, netty
Go Space Chat
【孤单Lonely】基于Golang/WebSocket/Canvas/Protobuf 的聊天室
Stars: ✭ 228 (-48.76%)
Mutual labels:  chatroom, websocket
styx
Programmable, asynchronous, event-based reverse proxy for JVM.
Stars: ✭ 250 (-43.82%)
Mutual labels:  netty, nio
cheshuo
🎃A lightweight game server framework. Based on Springboot and Netty. Using ProtoBuf as communication between client and server.
Stars: ✭ 23 (-94.83%)
Mutual labels:  netty, nio
Chat Room
使用GO+Vue构建的聊天室网站
Stars: ✭ 113 (-74.61%)
Mutual labels:  chatroom, websocket
Mmorpg
springboot编写的轻量级高性能mmorpg手游服务端框架,基本功能逐渐完善中。
Stars: ✭ 309 (-30.56%)
Mutual labels:  websocket, netty
Socket Mqtt
基于Netty+MQTT的高性能推送服务框架。支持普通Socket、MQTT、MQTT web socket协议。非常方便接入上层业务实现推送业务。
Stars: ✭ 314 (-29.44%)
Mutual labels:  websocket, netty
Simviso Source Code Interpretation Sharing
simviso 的一系列源码解读分享视频,涉及国外顶级学府课程翻译、国外顶级开发者视频翻译,JDK, Rxjava,Spring Reactor, Netty ,Reactor-Netty ,Spring Webflux 我的目标是将Java的响应式建立起一套学习体系,假如你想深入,可以参考我的视频和后续出版的书籍,同时展现一些我的编程经验,做一个铺路人
Stars: ✭ 412 (-7.42%)
Mutual labels:  nio, netty
Wechat
仿QQ即时通讯系统客户端
Stars: ✭ 144 (-67.64%)
Mutual labels:  chatroom, netty
Charroom
PHP + Swoole 聊天室
Stars: ✭ 125 (-71.91%)
Mutual labels:  chatroom, websocket
NioSmtpClient
Smtp Client based on Netty
Stars: ✭ 25 (-94.38%)
Mutual labels:  netty, nio
Swoole Tadpole
tadpole chatroom (maybe spermium) powered by swoole and slim framework
Stars: ✭ 116 (-73.93%)
Mutual labels:  chatroom, websocket
netty-learning
bio, nio到 netty各种使用案例, 包含基础使用案例,各api使用方法,零拷贝,websocket,群聊,私聊,编码,解码,自定义协议,protobuf等使用案例,rpc服务器,客户端等等学习
Stars: ✭ 49 (-88.99%)
Mutual labels:  netty, nio
Kotlin Ktor Exposed Starter
Starter RESTful service with websocket notifications using Kotlin, Ktor and Exposed with H2, HikariCP and FlyWay
Stars: ✭ 343 (-22.92%)
Mutual labels:  websocket, netty
Gochat
goim server write by golang !🚀
Stars: ✭ 1,144 (+157.08%)
Mutual labels:  chatroom, websocket
Chat Room
一个普通的聊天室
Stars: ✭ 85 (-80.9%)
Mutual labels:  chatroom, websocket
Firenio
🐳🐳An easy of use io framework project based on java nio&epoll
Stars: ✭ 305 (-31.46%)
Mutual labels:  nio, websocket

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 领淘宝天猫的优惠券,领取优惠券再下单可以省不少钱喔。你们使用这些优惠券购买东西时,我也可以得到一些佣金的,多谢支持!!!


Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].