J-IM 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
J-IM 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
J-IM 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
J-IM 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
J-IM 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 轨迹_
适用人群 未知
收录时间 2018-05-07

软件简介

J-IM 是用JAVA语言,基于t-io开发的轻量、高性能、单机支持几十万至百万在线用户IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协议间的消息发送如内置(http、websocket、tcp自定义im协议)等,并提供通过http协议的api接口进行消息发送无需关心接收端属于什么协议,一个消息格式搞定一切!

官网地址

http://www.j-im.cn

主要特点

    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:私聊)",
   "groupId":"群组id仅在chatType为(1)时需要,String类型",
   "content": "内容"
}
请求: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类型",
    "userId": "用户账号",
    "password": "密码",
    "token": "校验码(此字段可与userId、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)

使用

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

<dependency>
    <groupId>org.j-im</groupId>
    <artifactId>jim-server</artifactId>
    <version>3.0.0.v20200501-RELEASE</version>
</dependency>


- 客户端(快速开发自己的IM客户端):引入jim-client,在你的pom.xml中加入如下代码片段:

<dependency>
    <groupId>org.j-im</groupId>
    <artifactId>jim-client</artifactId>
    <version>3.0.0.v20200501-RELEASE</version>
</dependency>

新版官网界面截图

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

近期发布

支持Https、Wss (已完成)
支持J-PUSH消息推送
支持图片、语音、视频发送等
官网开发

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (36)

加载中
你们有遇到经常莫名其妙被踢下线的问题吗?
2020/10/19 17:30
回复
举报
可以了解下企业级的开源即时通讯&移动平台—WorkPlus Lite,具备“IM”,“通讯录”,“应用”,“工作台”,“音视频通话和会议”五大核心功能模块。 官网: https://gitee.com/workplus-lite 在线体验:https://lite.workplus.io/blog/try-lite-opened
2020/12/28 14:16
回复
举报
官网打不开啊
2020/07/23 09:37
回复
举报
轨迹_软件作者
J-IM 3.0.0.v20200501-RELEASE强势来袭@J-IM
2020/05/05 12:53
回复
举报
现在支持视频功能吗?
2019/09/05 09:35
回复
举报
不是说t-io要收费吗,使用这个有影响吗?
2019/03/05 16:02
回复
举报

引用来自“轨迹_”的评论

J-IM v2.1.0 新特性增加SSL/TLS安全加密传输支持 #J-IM#
怎么发送语音和图片?
2018/12/26 17:17
回复
举报
吓得我赶紧发表一下评论
2018/11/17 14:20
回复
举报
打分: 力荐
牛得一塌糊涂!
2018/11/14 16:51
回复
举报
导入报错,报错,报错
2018/11/13 10:06
回复
举报
厉害了,很好很强大,感谢大神共享~, 对于一楼大哥呀,你用人家代码,就别嫌弃了,得了好,还说人家不是。
2018/07/13 09:02
回复
举报
更多评论
发表于DevOps专区
2020/05/05 14:04

J-IM v3.0.0 发布 进行历史模块化重构

J-IM 3.0.0 发布了,J-IM是一款极度轻量、高性能、易扩展的IM中间件,它的主要目标降低即时通讯门槛,使用者基于它可以极快速、低成本的打造接入自己的高性能即时通讯服务器,并且通过极简洁的消息格式(JSON)就可以实现多端不同协议间的消息发送如内置(Http、Websocket、Tcp自定义IM协议)等,并提供通过Http协议的api接口进行消息发送无需关心接收端属于什么协议,一个消息格式搞定一切! 说明:本次J-IM为了追求初衷极度轻量、...

19
36
发表于AI & 大数据专区
2018/08/30 09:23

J-IM v2.3.0 发布,配置加载及命令扩展更灵活

J-IM 是用JAVA语言,基于 t-io 开发的轻量、高性能、单机支持几十万至百万在线用户 IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协议间的消息发送如内置(Http、Websocket、Tcp自定义IM协议)等,并提供通过http协议的api接口进行消息发送无需关心接收端属于什么协议,一个消息格式搞定一切,致力于打造最简洁、高性能的IM中间件! 发布 2.3.0.v20180830-RELEASE版,本次...

3
12
发表于DevOps专区
2018/07/25 09:02

J-IM v2.2.0 发布,所有消息体支持可扩展

J-IM 是用JAVA语言,基于 t-io 开发的轻量、高性能、单机支持几十万至百万在线用户 IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协议间的消息发送如内置(Http、Websocket、Tcp自定义IM协议)等,并提供通过http协议的api接口进行消息发送无需关心接收端属于什么协议,一个消息格式搞定一切! 发布 2.2.0.v20180725-RELEASE版,本次更新如下: 1、优化消息体设计改为建造...

4
19
发表于AI & 大数据专区
2018/06/11 11:39

J-IM v2.1.0 发布,支持 SSL/TLS 安全加密传输

J-IM 2.1.0 发布了,J-IM 是用 JAVA 语言,基 于t-io 开发的轻量、高性能、支持几十万至百万在线用户的IM(即时通讯)框架,它的主要目标降低即时通讯门槛,使用者基于它可以极快速、低成本的打造接入自己的高性能即时通讯服务器,并且通过极简洁的消息格式(JSON)就可以实现多端不同协议间的消息发送如内置(Http、Websocket、Tcp自定义IM协议)等,并提供通过Http协议的api接口进行消息发送无需关心接收端属于什么协议,一个消息格式...

2
24
发表于运维专区
2018/06/04 10:13

J-IM 1.1.0、2.0.1 发布 紧急修复TCP协议解码BUG

J-IM 1.1.0、2.0.1 发布了,J-IM 是一个用 JAVA 语言,基 于t-io 开发的轻量、高性能、支持几十万至百万在线用户的IM(即时通讯)框架,它的主要目标降低即时通讯门槛,使用者基于它可以极快速、低成本的打造接入自己的高性能即时通讯服务器,并且通过极简洁的消息格式(JSON)就可以实现多端不同协议间的消息发送如内置(Http、Websocket、Tcp自定义IM协议)等,并提供通过Http协议的api接口进行消息发送无需关心接收端属于什么协议,一...

7
10
发表于服务端专区
2018/05/28 08:44

J-IM 2.0.0 发布,不仅仅是单机百万更有集群支撑

J-IM 2.0.0 发布了,J-IM 是一个用 JAVA 语言,基 于t-io 开发的轻量、高性能、支持几十万至百万在线用户的IM(即时通讯)框架,它的主要目标降低即时通讯门槛,使用者基于它可以极快速、低成本的打造接入自己的高性能即时通讯服务器,并且通过极简洁的消息格式(JSON)就可以实现多端不同协议间的消息发送如内置(Http、Websocket、Tcp自定义IM协议)等,并提供通过Http协议的api接口进行消息发送无需关心接收端属于什么协议,一个消息...

31
61
发表于软件架构专区
2018/05/15 09:31

J-IM 1.0.1.v20180515-RELEASE 发布,没有一行代码凑合

J-IM,最新版1.0.1优化如下: 1、新增支持群组绑定监听器可扩展设置 2、增加支持Websocket协议可配置支持wsConfig; 3、增加Websocket协议自定义消息处理器IWsMsgHandler的扩展支持。 4、jim-server-demo一并升级 其它一些小的优化与设计。 别忘了给 https://gitee.com/xchao/j-im点个赞 (Star) 哦。

26
12
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2015/09/26 10:37

关于java 中 j = j++;

今天看《Java Puzzlers》,看到如下代码 [java] view plaincopy public static void main(String[] args) { int j = 0; for (int i = 0; i < 100; i++) j = j++; System.out.println(j); } 当时在想先取j,在赋值给j,j++,这样下来应该是100吧,但是运行代码之后,尽然发现是0!!真是震惊了啊! 于是我在C里面写了同样的代码 int main(int argc, char *argv[]) { int i, j = 0; for(i = 0; i < 100; i++) j = j++; printf("%...

0
0
发表于开发技能专区
01/08 17:14

im

https://spring.io/guides/gs/messaging-stomp-websocket/

0
0
发表了博客
2020/09/07 08:22

IM

防骗提醒 应用皆由第三方提供,与本平台无关。 点击查看「APP防骗指南」 我已了解 不再提醒

0
0
发表了博客
2015/10/30 19:40

J - Lines

题目描述: J - Lines Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status Practice HDU 5031 Appoint description: Description You play a game with your friend. He draws several lines on the paper with n×m square grids (see the left figure). After that, he writes down the number of lines passing through every integer coordinate in a matrix (see the right figure). T...

0
0
发表了博客
2018/02/25 20:09

next[j]的理解

//求next[j]的算法 void getNext(T,next[j]){ int j=1; k=0;//最长相等值 next[0]=-1;//为了好计算 ,故这样设值 next[1]=0;//第二个元素前的next[1]必等于0 while(j

0
0
发表了博客
2016/10/31 15:05

DE-9IM

DE-9IM 是一种拓扑模型,用于描述两个几何图形空间关系的一种标准。在专业领域,通常将每个几何图形分为三部分:外部(exterior),边界(boundary)和内部(interior)。 两个图形的关系判断,实际上就是三个部分的分别判断,因此就会有一个3*3交叉矩阵,这个矩阵就是DE-9IM模型: I()代表内部,B()代表边界,E()外部。在结果中,相交为点的维度为0,相交为线的维度为1,相交为面维度为2,-1代表没有相交即没有维度。如上图红色为相...

0
0
发表了博客
2014/12/05 11:17

for(i=0,j=0;i<10,j<10;i++,j++)用python怎么写

for i,j in zip(range(10),range(10)): i+=1 j+=1 或 >>> i=j=0 >>> while i<10 and j<10: i+=1 j+=1 或 for (x,y) in zip(range(10),range(10)): print x,y 或 for (i,j) in [(x,x) for x in range(0,10)]: print str(i)+"="+str(j)...

0
4
2015/01/14 14:35

IM总结

发送消息UDP打洞,登录的时候HTTP。 登录成功后,会有一个TCP连接来保持在线状态。这个TCP连接的远程端口一般是80,采用UDP方式登录的时候,端口是8000。 如果采用UDP协议,通过服务器中转方式。 UDP协议是不可靠协议,它只管发送,不管对方是否收到的。 如果client使用UDP协议发送消息后,服务器收到该包,需要使用UDP协议发回一个应答包,如此来保证消息可以无遗漏传输。 注册模块:6位数字ID,用户登录的唯一凭证。 P2P对等通...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于开发技能专区
2018/08/30 18:51

jim打包后,无法正常运行

打包后,其它项目的jar包都没有进来,类也不全,我应该怎么处理? 1、 打包后的jar 2、指定了启动类 3、运行

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
36 评论
325 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部