J-IM

单机支持几十至百万在线用户IM(即时通讯)高性能消息中间件
授权协议 Apache
开发语言 Java
所属分类 服务器软件、 电话/通讯/IM聊天
软件类型 开源软件
地区 国产
投 递 者 柴彬
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

官网地址

http://www.j-im.cloud

主要特点

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


    org.j-im
    jim-server
    3.0.0.v20200501-RELEASE



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


    org.j-im
    jim-client
    3.0.0.v20200501-RELEASE

新版官网界面截图

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

近期发布

支持Https、Wss (已完成)
支持J-PUSH消息推送
支持图片、语音、视频发送等
官网开发
  •       朋友说想搭个聊天服务器。经过多方研究,发现网上有一款开源软件J-IM,是搭建在国产通讯工具t-io上的,作者经过J-IM封装,已经变成了成熟产品谭聊,基础的东西作者也进行了开源。本着学习和研究的目的,本人还是想研究一下该项目。方便集成在项目中使用。        J-IM经过DEMO测试,确实减少了不少工作量。不过在搭建过程中,还是花了不少功夫。该工具是纯JAVA写的,为了测试方便,本

  • 码云上面有案例 客户端和服务端 客户端 多台机器测试的时候,把客户端绑定服务端的ip给换了(端口要和服务端保持一致) Node serverNode = new Node("192.168.31.38", 6000); 接着构建客户端配置信息 客户端可以配置 业务回调器(不可以为NULL) 回调是被动接受 事件监听器 监听是主动执行 等等 … ImClientConfig imClientCo

  • 开源社区:Gitee 下载J-IM源码,目前(2019.8.1)最新版本(v2.6.0)的J-IM没有上传到Maven仓库中,需要自己打包。作为一个Java开发人员,我相信你本地安装了Maven而且配置了环境变量。下载源码后进入jim-parent文件夹执行如下命令: mvn clean package -U -Dmaven.test.skip=true # Maven命令解释: 打包并跳过测试类

  • 在Ubuntu18中用Python写一个有关opencv的代码,用到了cv2.imshow,但是运行到这里就会报错: : cannot connect to X server 而我把cv2.imshow注释掉就没问题了,Google了一波问题,解决方法如下: 在代码中加入如下语句j就可以了: import os os.environ['DISPLAY'] = ':0' 参考:https://sta

  • Caused by: org.apache.logging.log4j.LoggingException: log4j-slf4j-impl cannot be present with log4j SpringBoot出现该错误,log4j冲突,exclusion一下【spring-boot-starter-logging】就好了 <dependency> <groupId>org.

 相关资料
  • Linux Mint 自带 pidgin,版本是 2.10。 从源码编译 如果想升级到最新版本,或者,因为某些特殊原因导致内置版本的 pidgin 不可使用,就需要考虑从源码开始编译。 特别说明: 手工编译升级 pidgin 和 lync插件 pidpin-sipe 到最新版本之后,开始可以使用,后面不久就莫名其妙的出问题,表现为 pidgin 启动之后无法找到 pidpin-sipe 导致无法支

  • Skype for Linux Alpha 是Skype for Linux 新版本的早期版本。 安装 下载地址: https://go.skype.com/skypeforlinux-64-alpha.deb 完成之后直接右键点击 deb 文件通过 Gdebi package installer 安装。 安装完成之后,在互联网下就可以找到 Skype for Linux Alpha: 这是 ab

  • 软件: Skype: skype For Linux Alpha Pidgin: 支持多协议的即时通讯软件 Lync兼容方案: 用于兼容 Lync 2013 / skype for business

  • Lync (后来被微软收购之后改名为 Skype for business) 没有 linux 版本,但是我们可以通过 pidgin 这个IM通用外壳配置 sipe 插件来实现和 Lync 的兼容和相互通讯。 注: 方案不够完美,但是至少,可以解决有没有的问题。 Pidgin 上一节介绍到,Linux Mint 18 自带 pidgin,也可以自行卸载再从源码编译安装到最新版本。 特别说明: 手工

  • 本文向大家介绍C# 调用腾讯即时通信 IM的示例,包括了C# 调用腾讯即时通信 IM的示例的使用技巧和注意事项,需要的朋友参考一下 IM SDK API 概述 https://cloud.tencent.com/document/product/269/33543 以上就是C# 调用腾讯即时通信 IM的示例的详细内容,更多关于c# 调用腾讯 im的资料请关注呐喊教程其它相关文章!

  • 妙传 IM是一个基于 Flutter 的 IM 客户端项目,服务端依托 webchat,需要将 webchat 服务部署后即可打包使用,是一个局域网测试调试传输的工具。当然也可以将服务部署到公网。只需在设置中将连接改为相应地址即可跨设备使用。 使用: 1.浏览器打开部署的 webchat(妙传服务端)地址,默认端口 8099.  2.在移动端设置中填写 webchat 的 IP 和端口,保存后刷新