登录 立即注册

首页 > 绿虎论坛 > 软件开发 > 编程语言 > golang (发帖)

标题: 即时消息系统 quickim 项目开源

作者: @Ta

时间: 2023-10-23

点击: 42571

Github项目地址

项目介绍

  • qucik-im-core项目初衷不是打造一个完整的即时通信项目,而是提供一个易于集成、扩展且轻量级并高性能的实时消息模块。

  • 本项目提供完整的HTTP API接入文档,可接入任何适用场景,包括且不限于客服系统OA系统等依赖实时消息功能的产品中。

  • 本项目适用Go语言开发,目标是,并提供完整的链路追踪功能,以便于快速梳理模块间依赖关系以便对可能产生的问题进行快速定位以及排查。

  • 本项目支持单用户多协议多平台同时登录,目前集成消息网关协议有websocketssepoll,终端可根据场景以及习惯来自定选择不同协议进行接入。

  • 本项目不对任何类型数据进行硬限制,包括且不限于会话类型消息类型等,为接入此项目的产品提供最自由的方案进行接入。

配置优先级

命令行参数 > 配置文件 > 环境变量

项目编译&镜像构建

  • 网关服务

    # 编译项目
    go build -ldflags="-s -w" -o ./gateway ./application/gateway/cmd/gateway.go
    # 构建docker镜像
    docker build -f ./deploy/dockerfile/gateway/Dockerfile -t quickim/gateway .
    
  • 会话服务

    # 编译项目
    go build -ldflags="-s -w" -o conversation ./application/services/conversation/server.go
    # 构建docker镜像
    docker build -f ./deploy/dockerfile/conversation/Dockerfile -t quickim/conversation .
    
  • 消息分发服务

    # 编译项目
    go build -ldflags="-s -w" -o msgbroker ./application/services/msgbroker/server.go
    # 构建docker镜像
    docker build -f ./deploy/dockerfile/msgbroker/Dockerfile -t quickim/msgbroker .
    
  • 消息中心服务

    # 编译项目
    go build -ldflags="-s -w" -o msghub ./application/services/msghub/server.go
    # 构建docker镜像
    docker build -f ./deploy/dockerfile/msghub/Dockerfile -t quickim/msghub .
    
  • 消息ID服务

    # 编译项目
    go build -ldflags="-s -w" -o msgid ./application/services/msgid/server.go
    # 构建docker镜像
    docker build -f ./deploy/dockerfile/msgid/Dockerfile -t quickim/msgid .
    
  • 消息持久化服务

    # 编译项目
    go build -ldflags="-s -w" -o persistence ./application/services/persistence/server.go
    # 构建docker镜像
    docker build -f ./deploy/dockerfile/persistence/Dockerfile -t quickim/persistence .
    

项目部署

  • docker-compose

    cd deploy
    docker-compose -f components.yaml # 部署依赖环境
    docker-compose -f docker-compose.yaml # 部署项目服务
    docker-compose -f jaeger/all-in-one.yaml # 如开启链路跟踪,则需部署jaeger
    

资料扩展

接口文档

quick-im-core项目架构

quick-im-core-layer.png(153.82 KB)


[隐藏样式|查看源码]


『回复列表(25|隐藏机器人聊天)』

1. 有demo吗
(/@Ta/2023-10-24 00:14//)

2. @大尨,刚写好的,还没来得及做demo
(/@Ta/2023-10-24 00:17//)

3. @大尨,服务端线上测试地址  http://45.159.208.31:8088/
(/@Ta/2023-10-24 07:16//)

4.

点赞支持,不过我的第一反应是,竟然不支持webhook,还有那个 SendTime字段明显偷懒了
~~~

(/@Ta/2023-10-24 09:20//)

5. @㝶芾厶眵攴䭡
(/@Ta/2023-10-24 10:21//)

6. @㝶芾厶眵攴䭡,下个版本搞起
(/@Ta/2023-10-24 10:39//)

7. @㝶芾厶眵攴䭡,时间格式改成时间戳了
(/@Ta/2023-10-24 12:33//)

8.

msgid是啥算法生成的啊
https://www.chengyao.xyz

(/@Ta/2023-10-24 19:09//)

9. @加勒比海带,参考融云的策略
(/@Ta/2023-10-24 20:16//)

10. @缘儿,怎么用啊
(/@Ta/2023-10-28 08:02//)

11. @罐子,有接口文档,示例还在做
(/@Ta/2023-10-29 13:56//)

12.

@缘儿,get搞个。微信消息推送能整个不,我可以提供公众号。

一加8Pro

(/@Ta/2023-10-29 14:18//)

13. @罐子,微信消息推送指的是?通过webhook那种?
(/@Ta/2023-10-30 08:53//)

14.

@缘儿,和wxpusher一样功能的
一加8Pro

(/@Ta/2023-11-04 15:55//)

15.

image.png(26.49 KB) 大佬,这种with 的写法有什么好处呢? 和一个结构体来表示有什么区别呢?
https://www.chengyao.xyz

(/@Ta/2023-11-07 22:26//)

16. @加勒比海带
一、Options模式解决什么问题

Options模式可以让具有多个可选参数的函数或方法更整洁和好扩展,当一个函数具有6个以上的可选参数使用这种模式有很明显的优化体验。

二、多参数函数传值解决方案

对需要多个参数的函数传参方式有以下几种解决方式:

传入固定参数值
传入配置对象
传入可变参数
使用options模式
(/@Ta/2023-11-08 08:12//)

17. @加勒比海带,其实这个写法在做三方库的时候很有用,我这么写是为了直观点,现在有很多三方库都是这样入参的,比如go-micro
(/@Ta/2023-11-08 08:13//)

18. 有demo吗请问
(/@Ta/2023-11-13 15:26//)

19. @小-晨,还没得
(/@Ta/2023-11-15 08:29//)

下一页 1/2页,共25楼

回复需要登录

11月24日 23:54 星期天

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1