qucik-im-core项目初衷不是打造一个完整的即时通信项目,而是提供一个易于集成、扩展且轻量级并高性能的实时消息模块。
本项目提供完整的HTTP API接入文档,可接入任何适用场景,包括且不限于客服系统、OA系统等依赖实时消息功能的产品中。
本项目适用Go语言开发,目标是轻、快、稳,并提供完整的链路追踪功能,以便于快速梳理模块间依赖关系以便对可能产生的问题进行快速定位以及排查。
本项目支持单用户多协议、多平台同时登录,目前集成消息网关协议有websocket、sse、poll,终端可根据场景以及习惯来自定选择不同协议进行接入。
本项目不对任何类型数据进行硬限制,包括且不限于会话类型、消息类型等,为接入此项目的产品提供最自由的方案进行接入。
命令行参数 > 配置文件 > 环境变量
网关服务
# 编译项目
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
点赞支持,不过我的第一反应是,竟然不支持
webhook
,还有那个SendTime
字段明显偷懒了~~~
msgid是啥算法生成的啊
https://www.chengyao.xyz
@缘儿,get搞个。微信消息推送能整个不,我可以提供公众号。
一加8Pro
@缘儿,和wxpusher一样功能的
一加8Pro
大佬,这种with 的写法有什么好处呢? 和一个结构体来表示有什么区别呢?
https://www.chengyao.xyz
一、Options模式解决什么问题
Options模式可以让具有多个可选参数的函数或方法更整洁和好扩展,当一个函数具有6个以上的可选参数使用这种模式有很明显的优化体验。
二、多参数函数传值解决方案
对需要多个参数的函数传参方式有以下几种解决方式:
传入固定参数值
传入配置对象
传入可变参数
使用options模式