J-IM简介
J-IM 是用 JAVA 语言,基于 t-io 研发的轻量、高性能、单机支持几十万至百万在线用户 IM,重点目的降低即时通讯门槛,快速打造低成本接入在线 IM 系统,经过极简洁的信息格式就能够实现多端区别协议间的信息发送如内置(Http、Websocket、Tcp 自定义 IM 协议)等,并供给经过 http 协议的 api 接口进行信息发送无需关心接收端属于什么协议,一个信息格式搞定一切!
JavaDoc:https://apidoc.gitee.com/xchao/j-im/
重点特点
1、高性能(单机可支持几十万至百万人
同期在线)
2、轻量、可扩展性极强
3、支持集群多机
安排
4、支持SSL/TLS加密传输
5、
信息格式极其简洁(JSON)
6、支持多种协议(Socket自定义IM协议、Websocket、Http),可分别独立
安排。
7、内置
信息持久化(离线、历史、漫游),
保准消息
靠谱性,高性能存储
8、
各样丰富的API接口。
9、零成本
安排,一键
起步。
信息格式
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:私聊)",
"group_id":"群组id仅在chatType为(1)时需要,String类型",
"content": "内容",
"extras" : "扩展字段,JSON对象格式如:{扩展字段名
叫作:扩展字段value}"
}
请求:COMMAND_CHAT_REQ(11) 响应:COMMAND_CHAT_RESP(12)
2.鉴权请求信息结构
{
"cmd":"命令码(3)int类型",
"token": "校验码"
}
请求:COMMAND_AUTH_REQ(3) 响应:COMMAND_AUTH_RESP(4)
3.握手请求信息结构
{
"cmd":"命令码(1)int类型",
"hbyte":"握手1个字节"
}
说明:请求:COMMAND_HANDSHAKE_REQ(1) 响应:COMMAND_HANDSHAKE_RESP(2)
4.登录请求信息结构
{
"cmd":"命令码(5)int类型",
"loginname": "用户名",
"password": "
秘码",
"token": "校验码(此字段可与logingname、password共存,
亦可只选一种方式)"
}
请求:COMMAND_LOGIN_REQ(5) 响应:COMMAND_LOGIN_RESP(6)
5.心跳请求信息结构
{
"cmd":"命令码(13)int类型",
"hbbyte":"心跳1个字节"
}
请求:COMMAND_HEARTBEAT_REQ(13) 响应:COMMAND_HEARTBEAT_REQ(13)
6.关闭、退出请求信息结构
{
"cmd":"命令码(14)int类型",
"userid":"用户id"
}
请求:COMMAND_CLOSE_REQ(14) 响应:无
7.获取用户信息请求信息结构
{
"cmd":"命令码(17)int类型",
"userid":"用户id(必填项)",
"type":"获取类型(0:所有在线用户,1:所有离线线用户,2:所有用户[在线+离线])"
}
请求:COMMAND_GET_USER_REQ(17) 响应:COMMAND_GET_USER_RESP(18)
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:历史
信息)"
}
请求:COMMAND_GET_MESSAGE_REQ(19) 响应:COMMAND_GET_MESSAGE_RESP(20)
性能
极其震撼的性能,那个每秒发送 500万条聊天信息,单机支持几十万人同期在线的测试当年导致了极重争议,瞧瞧 t-io 用户的一则测试报告吧: t-io 30W长连接并发压力测试报告:
https://my.oschina.net/u/2369298/blog/915435
运用
引入 j-im (快速
研发自己的高性能 IM 服务器),在你的 pom.xml 中加入如下代码片段<dependency>
<groupId>org.j-im</groupId>
<artifactId>jim-server</artifactId>
<version>2.6.0.v20190114-RELEASE</version>
</dependency>
J-IM有些截图
Web 拜访位置:http://localhost:8888
Http 协议api 调用位置:
http://localhost:8888/api/message/send
项目位置
https://gitee.com/xchao/j-im