gatewayworker心跳设置

发布时间:2020-08-27作者:小灵龙点击:198

问题描述:
   前端设置什么,后端设置什么。
解决办法:
下面的办法实用于websocket。
如果使用的是tcp协议,dtu设备,则只需要打开三个心跳设置参数即可。
心跳数据值不能为空,
当需要服务端定时给客户端发送心跳数据时, $gateway->pingData设置为服务端要发送的心跳请求数据,心跳数据是任意的,只要客户端能识别即可。客户端收到心跳数据可以忽略不做任何处理。
dtu


1,打开start_gateway.php 文件
    $gateway->pingNotResponseLimit = 1;
     // 心跳间隔
    $gateway->pingInterval =5;
    // 心跳数据
    $gateway->pingData = 'ping';

2,前端设置:
             socket.onopen = function() {
                        $("#msg").html("连接成功...<br>");
                        setInterval(
                            function(){
                                //socket.send('heart beat');
                                socket.send(JSON.stringify({"type":"ping","aid":aid}));
                            }, 5000
                        );           
        
                     };

     //如果前端没有给服务器发送心跳, 
console.log(message) 会出现start_getway.php文件$gateway->pingData设置的值。出现次数是$gateway->pingNotResponseLimit设置的值,如果超出这个值就关闭与前端的连接。
     //如果前端给服务器发送了心跳,event.php就不做任何处理, console.log(message) 就不会显示$gateway->pingData设置的值
                    socket.onmessage = function(e) {
                        var message=eval("("+e.data+")");
                        console.log(message);

                  }

注意:gateway Notice: Trying to access array offset on value of type null。如果给服务器发送heart beat就会报错,因为服务器接收json格式。

标签: