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中加入如下代码片段
<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