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