V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
gochat

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

  •  
  •   gochat · Dec 3, 2020 · 3123 views
    This topic created in 1973 days ago, the information mentioned may be changed or developed.

    项目地址: 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 replies    2020-12-09 18:31:10 +08:00
    wangbenjun5
        1
    wangbenjun5  
       Dec 3, 2020   ❤️ 1
    类似这样的 go 开发的 im 后端一大把,架构都类似,看来都是相互借鉴啊。。。其实我觉得 IM 这种应用缺的就是前端应用,不知道有没有开源的好用的?
    est
        2
    est  
       Dec 3, 2020
    Backer and Sponsor

    jetbrains

    JB 官方同意了吗?
    gochat
        3
    gochat  
    OP
       Dec 3, 2020 via iPhone   ❤️ 1
    @est jetbrains 有一项开源赞助计划,可以通过开源项目免费申请 jetbrains 全家桶 license,我目前 jet 系所有 ide 都可以免费使用,jetbranins 官方给你发 license 的时候会请求提议加入他们的 logo 推广放入仓库中,不过这一切都是用户自愿的原则,你也可以不帮他们推广的
    gochat
        4
    gochat  
    OP
       Dec 3, 2020 via iPhone
    @wangbenjun5 前端应该都自己弄吧,im 总体思路应该都差不多
    sunny352787
        5
    sunny352787  
       Dec 3, 2020
    看了一下结构,蛮好的呀,我最近在写一个类似的项目,设计思路也是分布式,区别在于我这个项目是按照类似网易云信这种第三方服务设计的,所以与其他服务的后端交互会比较多,权限也分的更严谨,也算是一个细分方向吧。不过由于是公司内部项目就不能放出来咯。
    est
        6
    est  
       Dec 4, 2020
    @gochat 还可以这样。学习了。
    gochat
        7
    gochat  
    OP
       Dec 4, 2020
    @est 可以试一试,弄个 jetbrains 全家桶 license
    sunshinev
        8
    sunshinev  
       Dec 9, 2020
    请教,分布式部署,消息是如何互通的
    gochat
        9
    gochat  
    OP
       Dec 9, 2020
    @sunshinev 仓库中画了一份图解的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4052 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 05:30 · PVG 13:30 · LAX 22:30 · JFK 01:30
    ♥ Do have faith in what you're doing.