V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
gochat
V2EX  ›  Go 编程语言

gochat - 纯 go 实现的 im 即时通讯系统 (支持 tcp, websocket 消息互通)

  •  
  •   gochat · 2020-12-03 19:30:34 +08:00 · 2554 次点击
    这是一个创建于 1442 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目地址: https://github.com/LockGit/gochat

    类别:Go

    项目描述:

    • gochat 为纯 go 实现的即时通讯系统,支持私信消息与房间广播消息,各层之间通过 rpc 通讯,支持水平扩展。
    • 支持 websocket,tcp 接入,并且在最新的版本中已经支持 websocket,tcp 消息互通。
    • 各层之间基于 etcd 服务发现,在扩容部署时将会方便很多。
    • 使用 redis 作为消息存储与投递的载体,十分轻量,在实际场景中还可以替换为更重的类似 kafka,rabbitMQ 。
    • 由于 go 的交叉编译特性,编译后可以快速在各个平台上运行,gochat 架构及目录结构清晰。
    • 本项目贴心的提供了 docker 一键构建所有环境依赖,安装起来十分便捷。(如果是体验,强烈建议使用 docker 构建)

    这一版的修改增加了 tcp 拆包解包部分,增加 tcp && websocket 之间的消息通信,待优化的问题还有很多,学习使用参考

    架构设计

    聊天室预览

    Tcp 与 Websocket 消息互通

    9 条回复    2020-12-09 18:31:10 +08:00
    wangbenjun5
        1
    wangbenjun5  
       2020-12-03 19:42:22 +08:00   ❤️ 1
    类似这样的 go 开发的 im 后端一大把,架构都类似,看来都是相互借鉴啊。。。其实我觉得 IM 这种应用缺的就是前端应用,不知道有没有开源的好用的?
    est
        2
    est  
       2020-12-03 19:46:40 +08:00
    Backer and Sponsor

    jetbrains

    JB 官方同意了吗?
    gochat
        3
    gochat  
    OP
       2020-12-03 20:04:58 +08:00 via iPhone   ❤️ 1
    @est jetbrains 有一项开源赞助计划,可以通过开源项目免费申请 jetbrains 全家桶 license,我目前 jet 系所有 ide 都可以免费使用,jetbranins 官方给你发 license 的时候会请求提议加入他们的 logo 推广放入仓库中,不过这一切都是用户自愿的原则,你也可以不帮他们推广的
    gochat
        4
    gochat  
    OP
       2020-12-03 20:07:56 +08:00 via iPhone
    @wangbenjun5 前端应该都自己弄吧,im 总体思路应该都差不多
    sunny352787
        5
    sunny352787  
       2020-12-03 20:36:42 +08:00
    看了一下结构,蛮好的呀,我最近在写一个类似的项目,设计思路也是分布式,区别在于我这个项目是按照类似网易云信这种第三方服务设计的,所以与其他服务的后端交互会比较多,权限也分的更严谨,也算是一个细分方向吧。不过由于是公司内部项目就不能放出来咯。
    est
        6
    est  
       2020-12-04 11:27:11 +08:00
    @gochat 还可以这样。学习了。
    gochat
        7
    gochat  
    OP
       2020-12-04 18:21:10 +08:00
    @est 可以试一试,弄个 jetbrains 全家桶 license
    sunshinev
        8
    sunshinev  
       2020-12-09 14:06:29 +08:00
    请教,分布式部署,消息是如何互通的
    gochat
        9
    gochat  
    OP
       2020-12-09 18:31:10 +08:00
    @sunshinev 仓库中画了一份图解的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5243 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 09:23 · PVG 17:23 · LAX 01:23 · JFK 04:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.