轻量高并发IM网关-实时通讯中间件-IMGateway
1、立项背景和目标:在直播和社交场景中,IM是核心基础设施但第三方SDK费用高且不可控,自研Erlang方案门槛又太高。目标是基于Go构建一个轻量级高并发IM网关,单机承载10万级WebSocket长连接,支持单聊、群聊和离线消息,让中小团队无需依赖第三方即可搭建自有IM服务。
2、核心功能模块:(1)连接管理模块——基于gorilla/websocket实现读写分离的双goroutine模型,每个连接独立管理心跳、超时、缓冲区;(2)自研二进制协议——8字节定长头+变长payload,相比JSON压缩约70%传输量,支持13种操作码覆盖认证/消息/房间/同步等场景;(3)Hub消息分发中心——单goroutine事件循环管理连接注册/注销/消息路由,房间广播采用快照读写分离避免锁竞争;(4)离线消息队列——基于Redis Sorted Set按时间戳排序存储,上线后通过SyncReq拉取增量消息;(5)房间系统——支持动态加入/退出/广播,Presence通知实时感知成员变化。
3、业务流程:客户端通过HTTP获取JWT Token → 建立WebSocket连接 → 发送Auth包完成认证 → 单聊发Msg包(Hub查表转发或写离线队列)→ 群聊发JoinRoom+RoomMsg包(Hub广播给房间成员)→ 离线用户上线后发SyncReq拉取未读消息。
社交
电商