(1)偶遇IM是一款基于netty的即时通讯框架,去中心化集群部署方案(简单解决脑裂问题);
(2)支持多协议传输(ws,wss,http,https)以及自定义协议,可自行扩展;
(3)IM内置多种序列化方式如 jdk,json,hessian,hessian2,kryo,fst,thrift(暂未实现),protoStuff,protoBuf.并且客户端与服务端可以使用protoStuff和protoBuf进行相互转换;
(4)支持文本消息,表情(emoji),文件(图片/音视频/文档等),语音(暂未开放)等功能;
(5)内置db和cache做消息持久化(离线、历史),高性能存储;
(6)支持同一账号多设备在线(可控),消息漫游;
(7)统一的编解码器,心跳检测,内置动态客户端;
(8)多种算法数据加密;
(9)SSL/TLS加密传输;
(10)通过ack以及重试机制保证消息可靠,功能可扩展性很强;
(11)tcp协议包packet
| 1 | 2 | 1 | 8 | 1 | 4 | 1 | 1 | 1 | 4 | n |
+--------+----------+-----------+----------+----------+----------+-----------+---------+----------+----------+---------+
| | | | | | | | | | | |
| 魔数 | 协议类型 | 协议版本 | 协议包id | 设备类型 | ip地址 |消息加密算法| 序列化算法| 消息类型 | 消息长度 | 消息体 |
| | | | | | | | | | | |
| | | | | | | | | | | |
+--------+----------+-----------+----------+----------+----------+-----------+---------+----------+----------+---------+
注意:如果不做特别说明,全部以大端序读写《https://www.cnblogs.com/iathanasy/p/12617793.html》
- 项目目录
- 服务端启动类
- 服务端启动类代码
- websocket客户端简单测试
-
首先修改服务端resources下的配置文件ouyu-im.properties中的集群服务地址im.server.cluster.address(如果开启集群)以及端口号im.server.port改为自己的服务地址以及端口号,不推荐使用127.0.0.1;如果单机启动则im.server.cluster.enable设置为false
-
修改cache模块中配置信息,更改自己的连接地址
-
在浏览器中打开文档中修改连接地址后的websocket客户端文件
-
测试两个客户端收发消息
-
如果使用nginx代理请查看相关资料;
https://my.oschina.net/leeck/blog/729443
个人Email:664936598@qq.com qq群:664955628 如果感觉对你有帮助请点个star支持一下
- 支持SSL/TLS (已完成)
- 支持弹幕消息推送
- 支持语音等
- 支持语音聊天、视频聊天(webRTC实现、或其他主流解决方案)
- 支持白板功能
- 集成springboot 以ouyu-im-spring-boot-starter
- 完善缓存和db模块
- 优化代码
由于本人技术有限,项目中可能会有bug或不代码规范的地方,如果对你带来了困扰请跳过本项目。 并且如果有任何想说的欢迎私信或提issue,咱们一起共同探讨交流。 另外如果商用请告知,否则带来的一些后果自负。