在zg人寿,我所在的项目组主要是用golang开发维护一个管理公司所有服务器server-client架构的系统,主要功能是采集客户端服务器各项指标,异常指标进行告警。达到监控服务器,及时处理异常,保证公司所有系统稳定正常运行。

我们项目申请了专利,所有没办法贡献源代码,本文的目的是简单实现服务端和客户端websocket通信。

server-client架构图

Websocket通信比http的好处主要是支持长连接,全双工通信,相比http传输数据量小;下面直接贴示例代码。

服务端:

客户端:


实战中,每台服务器需要安装客户端和服务端进行通信。我本地起10个客户端,没啥问题,对于只有几台服务器的项目毫无压力。我司比·不上互联网科技公司,但是服务器也是w数量级的。服务器端这么接收N多客户端的消息肯定是吃不消,技术层面需要通道channel去接收消息;架构层面需要分流去接收消息。

当然相比直播几百万人同时在线,我们这个系统就不值一提了,不管怎样希望本文让你对websocket通信长连接有个初步的了解。