IM项目

参考项目

https://github.com/crossoverJie/cim

使用的Netty-WebSocket

轻量级、高性能的WebSocket框架:

https://github.com/YeautyYE/netty-websocket-spring-boot-starter

在spring-boot中使用Netty来开发WebSocket服务器,并像spring-websocket的注解开发一样简单,很贴心,还有中文markdown。

框架

  1. Netty WebSocket通信协议
  2. nacos服务发现、服务治理、配置中心
  3. gateway网关、服务负载均衡、服务路由
  4. Kafka消息订阅发布、分布式消息队列 + Kafka-manager分布式队列监控
  5. Redis缓存 + Mysql持久化
  6. ElasticSearch 搜索引擎、日志存储、非关系型数据存储
  7. Logstash数据收集、转化、传输、加载 + DataX分布式ETL
  8. Kibana操作日志、系统日志、链路日志分析、基于ES的数据分析

通讯流程

  1. 客户端携带授权token向服务集群发起connect请求,请求会被网关转发到具体的某⼀个WebSocket节点中去。
  2. WebSocket服务针对connect进⾏鉴权,并且将该连接会话缓存在服务内,返回连接成功。
  3. 客户端定时像服务端发送WebSocket心跳ping请求,服务端返回ping报文。
  4. 客户端需要发送消息时,通过WebSocket发送报文。对应的WebSocket服务端接收到报文信息后,直接发布到消息队列的主题中
  5. 所有的WebSocket服务均监听消息队列主题,收到主题消息后,根据busiCode类型、toUserId、groupId等寻找到对应的⽤户id。再通过⽤户id获取到该服务节点中的会话,通过该会话进⾏消息推送。
  6. 另外⼀组队列监听程序,负责持久化消息。

其他支撑接口

Rest服务提供客户端查询历史数据,es的查询接口


   转载规则


《IM项目》 锦泉 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录