域名解析变更导致websocket终端“假掉线”现象

问题

系统升级,将域名解析的ip从主机变更为备机。终端通过域名连接websocket服务,原本以为域名不变,终端会自动过渡到备机wbsocket服务。事实并没有这样,新建立的终端是能与备机 websocket 服务正常通信的,原本在域名解析变更前已经建立连接的终端并不能正常通信。

工具: swoole

解决

这个原因是由于建立连接时,先将域名通过 DNS 解析为 IP,之后一直通过 IP 保持长连接。域名解析变更 IP ,只对之后新建立连接的终端起作用。

也就是说,目前早前建立连接的终端还在与主机的 webscket 通信。于是,我关闭了主机的 websocket 服务,释放了连接。由于终端有断线重连机制,终端根据域名解析成功连接至备机 websocket 服务。