类别:Go
项目描述:
- gochat 为纯 go 实现的即时通讯系统,支持私信消息与房间广播消息,各层之间通过 rpc 通讯,支持水平扩展。
- 支持 websocket,tcp 接入,并且在最新的版本中已经支持 websocket,tcp 消息互通。
- 各层之间基于 etcd 服务发现,在扩容部署时将会方便很多。
- 使用 redis 作为消息存储与投递的载体,十分轻量,在实际场景中还可以替换为更重的类似 kafka,rabbitMQ 。
- 由于 go 的交叉编译特性,编译后可以快速在各个平台上运行,gochat 架构及目录结构清晰。
- 本项目贴心的提供了 docker 一键构建所有环境依赖,安装起来十分便捷。(如果是体验,强烈建议使用 docker 构建)
这一版的修改增加了 tcp 拆包解包部分,增加 tcp && websocket 之间的消息通信,待优化的问题还有很多,学习使用参考
架构设计
聊天室预览
Tcp 与 Websocket 消息互通
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://study.congcong.us/t/731877
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.