单机支持百万在线用户IM(即时通讯) J-IM

Apache
Java
跨平台
2018-05-07
轨迹_

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

主要特点

    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": "内容"
}

请求: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长连接并发压力测试报告

使用

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

<>
    <>org.j-im<>
    <>jim-server<>
    <2.5.0.v20181115-RELEASE<>
<>

J-IM一些截图

Web访问地址:http://localhost:8888

输入图片说明

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

输入图片说明

输入图片说明

近期发布

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

 

的码云指数为
超过 的项目
加载中

评论(26)

小明的生活
小明的生活

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

J-IM v2.1.0 新特性增加SSL/TLS安全加密传输支持#J-IM#
怎么发送语音和图片?
boy_ling
boy_ling
吓得我赶紧发表一下评论
p
pnnm
牛得一塌糊涂!
c
chenyuner
导入报错,报错,报错
深夜里写着琴弹着代码
厉害了,很好很强大,感谢大神共享~, 对于一楼大哥呀,你用人家代码,就别嫌弃了,得了好,还说人家不是。
轨迹_
轨迹_ 软件作者
J-IM v2.1.0 新特性增加SSL/TLS安全加密传输支持#J-IM#
赵轩扬
不错
t
tomy_fu
怎么发送语音和图片?
轨迹_
轨迹_ 软件作者
J-IM 2.0.0已经发布,支持集群等其他实用的功能,可以了解下https://gitee.com/xchao/j-im!感谢关注
熊猫大侠到此一游
熊猫大侠到此一游
集期待集群功能

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

J-IM 是用JAVA语言,基于 t-io 开发的轻量、高性能、单机支持几十万至百万在线用户 IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协...

2018/08/30 09:23

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

J-IM 是用JAVA语言,基于 t-io 开发的轻量、高性能、单机支持几十万至百万在线用户 IM,主要目标降低即时通讯门槛,快速打造低成本接入在线IM系统,通过极简洁的消息格式就可以实现多端不同协...

2018/07/25 09:02

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

J-IM 2.1.0 发布了,J-IM 是用 JAVA 语言,基 于t-io 开发的轻量、高性能、支持几十万至百万在线用户的IM(即时通讯)框架,它的主要目标降低即时通讯门槛,使用者基于它可以极快速、低成本的打造...

2018/06/11 11:39

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

J-IM 1.1.0、2.0.1 发布了,J-IM 是一个用 JAVA 语言,基 于t-io 开发的轻量、高性能、支持几十万至百万在线用户的IM(即时通讯)框架,它的主要目标降低即时通讯门槛,使用者基于它可以极快速、...

2018/06/04 10:13

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

J-IM 2.0.0 发布了,J-IM 是一个用 JAVA 语言,基 于t-io 开发的轻量、高性能、支持几十万至百万在线用户的IM(即时通讯)框架,它的主要目标降低即时通讯门槛,使用者基于它可以极快速、低成本的...

2018/05/28 08:44

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

J-IM,最新版1.0.1优化如下: 1、新增支持群组绑定监听器可扩展设置 2、增加支持Websocket协议可配置支持wsConfig; 3、增加Websocket协议自定义消息处理器IWsMsgHandler的扩展支持。 4、jim...

2018/05/15 09:31

没有更多内容

加载失败,请刷新页面

没有更多内容

1
回答
jim打包后,无法正常运行

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

2018/08/30 18:51

没有更多内容

加载失败,请刷新页面

没有更多内容

FFT Lib

// // FFT library // // (one-dimensional complex and real FFTs for array // lengths of 2^n) // // Author: Toth Laszlo (tothl@inf.u-szeged.hu) // // Research Group on Artificial ...

2012/03/14 15:45
193
0
Støjreduktion hovedtelefoner blev opfundet my spou

Enheden skallen im blevet gjort mediterranean sea high-lysreflekterende forarbejdning. Selvom denne proces im udfordring - nemt in få kids finger produce, Sudio im lysreflekter...

2014/11/05 17:17
6
0
java学习第二天

java applet 输入与输出

2014/05/28 21:58
13
0
一款PHP验证码的精心打造

比如你用PHP开发了网站的会员登录页面,当然要实现验证码,验证码的图片可以是静态的,也可以是动态的,文字可以是汉字,英文,法文,日文等等,可以随便替换。如验证码图片: : 当然可以修...

2015/11/11 12:22
81
0
php对bmp图片的处理

## 由文件或 URL 创建一个新图象 ImageCreateFromBMP ``` function ImageCreateFromBMP($filename) { //php7.2支持 if(function_exists("imagecreatefrombmp")){ return imagecreatefrombmp...

2018/06/15 16:24
10
0
如何使用PHP中ci框架实现验证码?

使用PHP语言实现验证码的生产我们之前也为大家展示了许多的案例,那么今天我们就为大家来展示更多的关于PHP相关代码生产验证码的代码。 PHP语言ci框架生产验证码其实原理比较简单,通过调用以...

2013/04/29 18:12
28
0
拟合与逼近

#include "stdafx.h" #include <stdlib.h> #include <math.h> #include "FitApproach.h" //最佳一致逼近的里米兹方法 void hremz(double a, double b, double p[], int n, double eps) { in...

2010/03/30 12:57
260
0
关于利用python进行验证码识别的一些设想

用python加“[url=www.zhima365.com]验证码[/url]”为关键词用度娘搜索了一下,可以找到很多关于验证码识别的文章,比如知码网里面就有很多相关信息和业内动态。我大体看了一下,主要方法有几...

2013/06/10 23:42
85
0
PHP图形验证码程序

最近经常有人问我这个Blog中的图形验证码是如何做的.下面是这个php图形验证码的源程序. 欢迎指正. class.image.php /* =========================================================== class....

2013/09/18 14:56
69
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部