采用Golang
语言,基于 gRPC
+ [Mongo
+ Vue3
+Websocket
+RabbitMQ
]来实现系统
用户侧逻辑采用匿名注册模式,Token
采用JWT
技术,服务端不保存Token
信息,用户每次使用检测Token
合法时返回新的Token
来达到续期的目的
后端分为 客户服务
,客服服务
,客户用户中心
,客服用户中心
客户服务
: 创建、打开会话,发送、接受消息,关闭会话客服服务
: 与客户前端通过gRPC
双向流来通信沟通。内容包括: 与当前服务的客户发送、接收消息,等待服务的客户列表、变动,开始、停止服务客户Token
前端当前仅实现了Web端,通过websocket
服务器与后端沟通
allinone
- gRPC
[Mongo
]适用于单体服务器能支撑业务的场景,所有服务都集成在一个程序里, 所有客户、客服的沟通都通过回调函数来解决
配置文件中
Dev->UseMemoryModel
来配置是使用内存还是Mongo
来保存用户和会话信息. 如果内存保存,则服务重启后数据清零
gRPC
Mongo
RabbitMQ
客户服务
客服服务
客服用户中心
服务可横向扩展
App
- 未实现gRPC
Web
端Web
端WebSocket
服务器WebSocket
服务器Golang
, npm
,vue
# 下载库
git clone https://github.com/zservicer/talkbe.git
git clone https://github.com/zservicer/talkfe.git
# 开一个窗口,运行后端程序
cd talkbe
cp config.yaml.allinone.sample config.yaml
cp ws_config.yaml.sample ws_config.yaml
go run cmd/allinone/main.go
# 开一个窗口,运行前端程序
cd talkfe
npm install
npm run server
客服端: 浏览器打开http://127.0.0.1:8080
具体端口号可以看
npm run server
的提示。登录用户名/密码为: demo/123456
用户端: 浏览器打开talkfe
工程的demo/customer/talk.html
客服端: https://kf.ymipro.com/
登录用户名/密码为: demo/123456
用户端: https://www.ymipro.com/