简介
本系统基于Golang、Redis、RPC实现分布式WebSocket微服务,也可以单机部署,单机部署不需要Redis、RPC。分布式部署可以支持nginx负责均衡、水平扩容部署,程序之间使用RPC通信。
基本流程为:用ws协议连接本服务,得到一个clientId,由客户端上报这个clinetId给服务端,服务端拿到这个clientId之后,可以给这个客户端发送信息,绑定这个客户端都分组,给分组发送消息。
目前实现的功能有,给指定客户端发送消息、绑定客户端到分组、给分组里的客户端批量发送消息、获取在线的客户端、上下线自动通知。适用于长连接的大部分场景,分组可以理解为聊天室,绑定客户端到分组相当于把客户端添加到聊天室,给分组发送信息相当于给聊天室的每个人发送消息。
文档
SDK
使用
下载本项目:
这里已经打包好了,下载相应的环境,支持Linux、Windows、MacOS环境。
你也可以选择自己编译:
编译:
执行:
go-websocket666
连接测试:
ws://127.0.0.1:666/wsclientId
单机部署
单机部署很简单,不需要配置Redis,只需要编译然后运行该二进制文件就可以了,步骤如上。
分布式部署
安装ETCD: 参考网上教程
配置文件:
configs/config.inicluster
运行项目:
supervisor
配置Nginx负载均衡:
至此,项目部署完成。
实现的功能
- 分布式
- 账户授权模式
- 不同业务系统隔离
- 发送给指定客户端
- 发送给指定分组
- 上下线通知
- 群广播
- 错误日志
- 参数校验
- 关闭某个连接
- 查询某个客户端是否在线
沟通交流
QQ群:1028314856