观察服务器端socketio客户端的ping

时间:2015-05-13 06:24:48

标签: node.js websocket socket.io

我知道socketio客户端每隔25秒发送一次ping(心跳间隔)并从服务器返回响应。我想在服务器端从客户端打印此ping,并且如果可能的话也捕获节点服务器发回的ping响应。

我尝试使用

socket.on("ping", function(data) {
    console.log("received ping");
});
socket.on("pong", function(data) {
    console.log("received pong");
});

在客户端和服务器端,但我无法捕获它们

1 个答案:

答案 0 :(得分:3)

此代码段可以在服务器上运行。基础engine.io server socket的文档指定了事件监听器packetpacketCreate的参数,该对象位于socket.conn

socket.conn.on('packet', function (packet) {
  if (packet.type === 'ping') console.log('received ping');
});

socket.conn.on('packetCreate', function (packet) {
  if (packet.type === 'pong') console.log('sending pong');
});

原来这些事件的engine.io文档是错误的。参数不是typedata,根据{{3的来源,它是包含属性packettype的单个参数data }和the packet event