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

Aji*_*ith 5 websocket node.js 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");
});
Run Code Online (Sandbox Code Playgroud)

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

Pat*_*rts 9

此代码段可以在服务器上运行。底层engine.io 服务器套接字的文档指定了事件侦听器packet和的参数packetCreate,该对象位于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');
});
Run Code Online (Sandbox Code Playgroud)

原来这些事件的 engine.io 文档是错误的。的参数是不typedata,它是一个参数packet包含属性typedata,根据所述源为所述packet事件所述packetCreate事件