gateway进程数为4,客户端会传来大量的数据到onMessage方法,onMessage中要处理大量的数据 这样会不会导致onMessage无法接收到心跳,从而导致websocket连接被强制断开
中间还有2次心跳,客户端发了,但后端好像没有收到 32分35秒时websocket连接无故被断开 33分12秒时客户端重新连接成功
现在不知道为何被断开了
// 心跳间隔 $gateway->pingInterval = 50;
$gateway->pingInterval = 50; 含义是客户端50秒内没发来心跳,则关闭连接,和businessWorker的onMessage没有关系。 websocket连接断开是很正常的现象,浏览器刷新,电脑休眠,手机浏览器进入后台,切换tab页面后原页面js被暂停(心跳无法发送),网络波动等很多情况都可能导致。客户端做好重连就行。
因为客户端是一个摄像头需要实时拍照,断开几秒会出现漏拍情况 所以websocket连接始终不可以断开,现在客户端每隔30秒就会发一个心跳数据到onMessage上 但现在从tcpdump上看,好像有的心跳数据并没有接收到,所以导致断开了,为啥没接收到,暂时还没找到原因
抓包看心跳有没有发上来,另外抓包能看到是谁关闭的连接。如果是客户端关闭的,需要从客户端找问题。 也有可能客户端发送数据快于onMesasge处理速度,导致消息积压,心跳消息没处理到。
$gateway->pingInterval = 50; 含义是客户端50秒内没发来心跳,则关闭连接,和businessWorker的onMessage没有关系。
websocket连接断开是很正常的现象,浏览器刷新,电脑休眠,手机浏览器进入后台,切换tab页面后原页面js被暂停(心跳无法发送),网络波动等很多情况都可能导致。客户端做好重连就行。
因为客户端是一个摄像头需要实时拍照,断开几秒会出现漏拍情况
所以websocket连接始终不可以断开,现在客户端每隔30秒就会发一个心跳数据到onMessage上
但现在从tcpdump上看,好像有的心跳数据并没有接收到,所以导致断开了,为啥没接收到,暂时还没找到原因
抓包看心跳有没有发上来,另外抓包能看到是谁关闭的连接。如果是客户端关闭的,需要从客户端找问题。
也有可能客户端发送数据快于onMesasge处理速度,导致消息积压,心跳消息没处理到。