All Projects → Yohann-Codes → Jelly

Yohann-Codes / Jelly

一款IM服务器端程序,基于Netty4.x开发,并且提供了客户端API。

Programming Languages

java
68154 projects - #9 most used programming language

Labels

Projects that are alternatives of or similar to Jelly

Im
仿QQ即时通讯系统服务端
Stars: ✭ 369 (+72.43%)
Mutual labels:  im, netty
Cim
📲cim(cross IM) 适用于开发者的分布式即时通讯系统
Stars: ✭ 8,109 (+3689.25%)
Mutual labels:  im, netty
Im
IM server based on netty. Provides a client jar. Integrate with your own login system.基于netty实现的IM服务端,提供客户端jar包,可集成自己的登录系统
Stars: ✭ 490 (+128.97%)
Mutual labels:  im, netty
fire-im
分布式IM服务,参考https://github.com/crossoverJie/cim 实现
Stars: ✭ 17 (-92.06%)
Mutual labels:  netty, im
Him Vue
开源的H5即时聊天系统 spring-boot + netty + protobuf + vue ~
Stars: ✭ 142 (-33.64%)
Mutual labels:  im, netty
Mpush
MPush开源实时消息推送系统
Stars: ✭ 3,455 (+1514.49%)
Mutual labels:  im, netty
Netty Websocket Spring Boot Starter
🚀 lightweight high-performance WebSocket framework ( 轻量级、高性能的WebSocket框架)
Stars: ✭ 885 (+313.55%)
Mutual labels:  im, netty
Kingim
KingIM是基于layim的websocket即时通讯系统,底层使用netty。
Stars: ✭ 538 (+151.4%)
Mutual labels:  im, netty
Fpush
📶即时消息推送服务(即时通讯),基于Netty+protobuf-- Instant Messaging push service based on Netty+protobuf
Stars: ✭ 134 (-37.38%)
Mutual labels:  im, netty
T Io
解决其它网络框架没有解决的用户痛点,让天下没有难开发的网络程序
Stars: ✭ 1,331 (+521.96%)
Mutual labels:  im, netty
bootpush
📶即时消息推送服务(即时通讯),基于Netty- Instant Messaging push service based on Netty
Stars: ✭ 146 (-31.78%)
Mutual labels:  netty, im
Him Netty
开源的H5即时聊天系统 spring-boot + netty + protobuf + vue ~
Stars: ✭ 194 (-9.35%)
Mutual labels:  im, netty
fastim
🚀基于Netty高可用分布式即时通讯系统,支持长连接网关管理、单聊、群聊、离线消息、消息推送消息、消息已读未读、消息未读数、红包、消息漫游等功能,支持集群部署的分布式架构。
Stars: ✭ 111 (-48.13%)
Mutual labels:  netty, im
Mobileimsdk
一个原创移动端IM通信层框架,轻量级、高度提炼,历经8年、久经考验。可能是市面上唯一同时支持UDP+TCP+WebSocket三种协议的同类开源框架,支持iOS、Android、Java、H5,服务端基于Netty。
Stars: ✭ 3,864 (+1705.61%)
Mutual labels:  im, netty
Easychatandroidclient
EasyChat是一个开源的社交类的App。主要包含消息、好友、群组等相关的IM核心功能。部分界面参照了QQ、微信等相关社交APP。EasyChat APP整体采用MVVM模式,基于JetPack(Lifecycle,LiveData,ViewModel,Room)构建
Stars: ✭ 64 (-70.09%)
Mutual labels:  im, netty
Netty Learning Example
🥚 Netty实践学习案例,见微知著!带着你的心,跟着教程。我相信你行欧。
Stars: ✭ 2,146 (+902.8%)
Mutual labels:  im, netty
Nettychat
基于Netty+TCP+Protobuf实现的Android IM库,包含Protobuf序列化、TCP拆包与粘包、长连接握手认证、心跳机制、断线重连机制、消息重发机制、读写超时机制、离线消息、线程池等功能。
Stars: ✭ 1,979 (+824.77%)
Mutual labels:  im, netty
Catacumba
Asynchronous web toolkit for clojure built on top of Ratpack / Netty
Stars: ✭ 192 (-10.28%)
Mutual labels:  netty
React Native Netease Im
网易云信React Native组件
Stars: ✭ 204 (-4.67%)
Mutual labels:  im
Tablestore Timeline
TableStore-Timeline Model for Social scene
Stars: ✭ 192 (-10.28%)
Mutual labels:  im

Jelly


Jelly是一款基于Netty4.x开发的TCP长连接即时通讯服务器端程序;并且提供了Java客户端API。

功能包括

  • 账户:登录、注册、登出
  • 好友:添加、删除、好友在线状态
  • 消息:个人消息、讨论组消息(支持离线消息)
  • 讨论组:创建和解散讨论组、添加和删除成员
  • 个人信息:修改个人信息、查看个人信息

Architecture

模块介绍

  • jelly-launcher   启动模块(就一个类而已)
  • jelly-transport   数据传输模块
  • jelly-serialization   序列化模块
  • jelly-service   服务模块
  • jelly-dao   数据访问模块

应用层协议

                                        Jelly Protocol
    __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __
   |           |           |           |           |              |                          |
         2           1           1           1            4               Uncertainty
   |__ __ __ __|__ __ __ __|__ __ __ __|__ __ __ __|__ __ __ __ __|__ __ __ __ __ __ __ __ __|
   |           |           |           |           |              |                          |
       Magic        Sign        Type       Status     Body Length         Body Content
   |__ __ __ __|__ __ __ __|__ __ __ __|__ __ __ __|__ __ __ __ __|__ __ __ __ __ __ __ __ __|
 
   协议头9个字节定长
       Magic      // 数据包的验证位,short类型
       Sign       // 消息标志,请求/响应/通知,byte类型
       Type       // 消息类型,登录/发送消息等,byte类型
       Status     // 响应状态,成功/失败,byte类型
       BodyLength // 协议体长度,int类型

数据交换格式:JSON(框架:Gson)

工作流程

              --------> Request        - - - - -> Response       -- -- --> Notice                    
---------------------------------------------------------------------------------------------------- 
                                                                                                     
                                                                                                     
                             __ __ __ __ __ __ __ __ __ __ __ __ __ __                               
                            |                  Server                 |                              
      __ __ __ __           |  __ __ __ __ __         __ __ __ __ __  |            __ __ __ __       
     |           | Request  | |              |       |              | |  Notice   |           |      
     |   Client  |--------> | | BlockingQueue| ----> |  ThreadPool  | | -- -- --> |   Client  |      
     |__ __ __ __|          | |__ __ __ __ __|       |__ __ __ __ __| |           |__ __ __ __|      
           |                |                                |        |                              
           |                |__ __ __ __ __ __ __ __ __ __ __|__ __ __|                              
           |                                                 |                                       
           |                    Response                     |                                       
            <- - - - - - - - - - - - - - - - - - - - - - - -                                         
                                                                                                     
                                                                                                     
---------------------------------------------------------------------------------------------------- 

其它说明

1. 登录成功后

  • 服务器端登录信息验证成功后生成Long类型的Token返回给客户端,此Token用于断线重连的验证信息
  • 开启心跳检测,客户端每空闲5s发送一个心跳包,服务器端每空闲6s计一次心跳失败
  • username和channel维护在一个Map集合中

2. 断线重连

  • 使用Token尝试重连一次

3. 讨论组信息

  • 为了减小内存压力,,在Server启动时会开启一个定时任务,每隔五分钟检查一次groupMap(保存讨论组信息的Map集合),最后一次活跃时刻过去超过10分钟的讨论组被从内存中remove掉;直到下一次活跃时刻才会被调入内存(活跃就是组员发消息)

客户端API

提供的都有API都是异步的,调用之后会返回一个Future,使用该Future添加相应的监听器来得到的服务器的响应结果。

**API详细说明:[JellyAPI](https://github.com/Yohann-Codes/JellyAPI)**

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].