https://mp.weixin.qq.com/s/REkPXOAQSW_LekEaxwjE8g

项目简介
本项目运用JAVA编程语言,精心打造了一款高效能、轻量级的即时通讯系统。该系统在单机环境下能够稳定承载数十万至百万级别的在线用户,旨在简化即时通讯技术的实施难度,助力企业或个人迅速构建低成本、高性能的在线IM系统。

本项目的核心亮点在于其独特的消息格式设计,这种设计使得系统能够轻松实现不同协议间的消息互通,无论是内置的Http、Websocket还是Tcp自定义IM协议,都能实现无缝对接,确保消息的传递既快速又准确。此外,我们还提供了基于Http协议的API接口,用户无需关心接收端使用的是何种协议,只需按照统一的消息格式发送消息,即可轻松实现跨平台、跨协议的消息通信。

主要特点
高性能:单机环境下支持数十万至百万用户同时在线,满足大规模应用需求。

轻量且可扩展:系统架构轻量,同时具备良好的可扩展性,适应不同规模的应用场景。

支持集群部署:支持多机集群部署,实现更高的并发处理能力和系统稳定性。

安全传输:支持SSL/TLS加密传输,保障通信过程的安全性。

简洁的消息格式:采用JSON格式,既易于阅读又方便解析,降低开发难度。

多协议支持:同一端口支持可插拔的多种协议,包括Socket自定义IM协议、Websocket、Http等,且各协议可独立部署,灵活性极高。

消息持久化:内置消息持久化机制,保证离线消息、历史消息和漫游消息的可靠性,同时提供高性能的存储解决方案。

丰富的API接口:提供多种API接口,满足用户多样化的需求。

一键部署:实现零成本部署,一键启动,简化部署流程。

消息格式
1.聊天请求消息结构

{
   "from": "来源ID",
   "to": "目标ID",
   "cmd":"命令码(11)int类型",
   "createTime": "消息创建时间long类型",
   "msgType": "消息类型int类型(0:text、1:image、2:voice、3:vedio、4:music、5:news)",
   "chatType":"聊天类型int类型(0:未知,1:公聊,2:私聊)",
   "groupId":"群组id仅在chatType为(1)时需要,String类型",
   "content": "内容",
   "extras" : "扩展字段,JSON对象格式如:{'扩展字段名称':'扩展字段value'}"
}

2.鉴权请求消息结构

{
    "cmd":"命令码(3)int类型",
    "token": "校验码"
}

3.握手请求消息结构

{
    "cmd":"命令码(1)int类型",
    "hbyte":"握手1个字节"
}

4.登录请求消息结构

{
    "cmd":"命令码(5)int类型",
    "userId": "用户账号",
    "password": "密码",
    "token": "校验码(此字段可与userId、password共存,也可只选一种方式)"
}

请求:COMMAND_LOGIN_REQ(5) 响应:COMMAND_LOGIN_RESP(6)

5.心跳请求消息结构

{
    "cmd":"命令码(13)int类型",
    "hbbyte":"心跳1个字节"
}

6.关闭、退出请求消息结构

{
    "cmd":"命令码(14)int类型",
    "userId":"用户ID"
}

7.获取用户信息请求消息结构

{
     "cmd":"命令码(17)int类型",
     "userId":"用户id(必填项)",
     "type":"获取类型(0:所有在线用户,1:所有离线线用户,2:所有用户[在线+离线])"
}

8.获取持久化聊天消息(离线+历史+漫游)请求结构

{
     "cmd":"命令码(19)int类型",
     "fromUserId":"消息发送用户id(此字段必须与userId一起使用,获取双方聊天消息),非必填",
     "userId":"当前用户id(必填字段),当只有此字段时,type必须为0,意思是获取当前用户所有离线消息(好友+群组)",
     "groupId":"群组id(此字段必须与userId一起使用,获取当前用户指定群组聊天消息),非必填",
     "beginTime":"消息区间开始时间Date毫秒数double类型,非必填",
     "endTime":"消息区间结束时间Date毫秒数double类型,非必填",
     "offset":"分页偏移量int类型,类似Limit 0,10 中的0,非必填",
     "count":"显示消息数量,类似Limit 0,10 中的10,非必填",
     "type":"消息类型(0:离线消息,1:历史消息)"
}

使用
服务端(快速开发自己的高性能IM服务器):引入jim-server,在你的pom.xml中加入如下代码片段

org.j-im jim-server 3.0.0.v20200501-RELEASE 客户端(快速开发自己的IM客户端):引入包,在你的pom.xml中加入如下代码片段
<dependency>
    <groupId>org.j-im</groupId>
    <artifactId>jim-client</artifactId>
    <version>3.0.0.v20200501-RELEASE</version>
</dependency>

官网截图
图片

图片

图片

图片

老版一些截图
Web访问地址:http://localhost:8888

图片

Http协议api调用地址:http://localhost:8888/api/message/send

图片

图片

近期发布
支持Https、Wss (已完成)

支持J-PUSH消息推送

支持图片、语音、视频发送等

官网开发

项目地址: https://gitee.com/xchao/j-im.git

文档更新时间: 2024-04-14 17:40   作者:admin