有时候会有些极端的情况,例如客户端掉电、网络关闭、网线掉了、路由故障等。会导致服务端无法触发onClose
回调。另外路由节点防火墙会关闭长时间不通讯的socket
连接,导致socket
长连接断开。
这两种情况都需要使用心跳
来解决。所谓心跳
,其实就是服务端和客户端定时通信一下就好了。
两种情况
文档中还有个说明,说分两种情况。
首先都是服务端定时向客户端发心跳数据。
如果,客户端不响应数据,那碰到极端情况,可能需要 10 分钟以上才能触发onClose
。
另一种是,客户端做响应,如果服务端在指定时间没有收到任何响应的信息,那就直接触发onClose
。
GatewayWorker
在GatewayWorker
中实现心跳,也是很简单啊。打开Applications/YourApp/start_gateway.php
,取消这两行代码的屏蔽。这样GatewayWorker
就会每 10 秒钟,发送一条`{"type":"pi...