最近从0到1在写一个IM系统,在此基础上做社交功能。
- 整体是c/s架构
- 前端界面使用Fyne(go领域的GUI), 后端golang.
- 第一版 数据交互 使用tcp socket
- 前端存储消息使用sqlite,包含离线消息同步
- 后端存储离线消息使用mongodb, 定时清理过期的消息
- 视频初版并没有采用云方案:上传后拿到一个url, 而是直接使用tcp传输,不依赖其它。这样做的原因一方面是减少依赖,二是就想使用tcp传输大文件看看效果,为后续quic的可能做些铺垫
- 社交关系使用neo4j【待做】
- 群聊推送在使用多台IM服务器时,使用pulsar/kafka 分发消息,以及nginx转发tcp流量
目前功能演示如下:
IM演示
为什么要写这个,呃,就像某导演说的,要不是因为这点醋,谁包这饺子啊!为了quic/http3协议,才写这个项目,希望能坚持到底吧……