【Github】项目名:woodylan/go – websocket:基于Golang的分布式WebSocket服务
一、项目简介
该项目基于Golang、ETCD、RPC实现分布式WebSocket微服务,也可单机部署(单机部署不需要ETCD、RPC)。它支持分布式部署下的nginx负载均衡和水平扩容部署,程序间使用RPC通信。功能方面,它能用ws协议连接服务得到clientId,服务端可依据clientId向客户端发消息、绑定客户端到分组、向分组发消息、获取在线客户端、上下线自动通知等,适用于长连接场景。
二、项目下载与执行
可以下载已经打包好的项目,支持Linux、Windows、MacOS环境:https://github.com/woodylan/go – websocket/releases。也能自己编译,如git clone https://github.com/woodylan/go – websocket.git后,按照不同的系统需求编译(如编译适用于本机的版本:go build;编译Linux版本:CGO_ENABLED = 0 GOOS = linux GOARCH = amd64 go build等),编译成功得到二进制文件go – websocket后执行即可。
三、连接测试与项目体验
连接测试可打开支持Websocket的客户端,输入ws://127.0.0.1:7800/ws?systemId = xxx进行连接,成功会返回clientId。单机构建镜像体验:docker build – t go – websocket.,基于镜像运行容器:docker run – tid – p7800:7800 go – websocket;体验集群则在当前目录下直接运行docker – compose up即可。
四、项目配置
配置文件位于项目根目录的conf/app.ini,其中包含如[common]中的HttpPort、RPCPort、是否集群、对称加密key等设置,[etcd]中的Endpoints设置等。运行项目时在不同机器要注意配置端口号,同一机器要用不同端口,还可以用supervisor做进程管理。并且给出了配置Nginx负载均衡的示例。
五、项目功能总结
项目实现了分布式账户授权模式、不同业务系统隔离、发送给指定客户端、发送给指定分组、上下线通知、群广播、错误日志、参数校验、关闭某个连接、支持docker、查询某个客户端是否在线等功能。欢迎大家在QQ群1028314856进行沟通交流。期待大家留言讨论这个项目。
项目地址
数据统计
数据评估
本站链氪巴士提供的woodylan/go-websocket:基于Golang的分布式WebSocket服务都来源于网络,不保证外部链接的准确性和完整性,同时,对于该外部链接的指向,不由链氪巴士实际控制,在2024年12月6日 上午12:00收录时,该网页上的内容,都属于合规合法,后期网页的内容如出现违规,可以直接联系网站管理员进行删除,链氪巴士不承担任何责任。