我知道socketio客户端每隔25秒发送一次ping(心跳间隔)并从服务器返回响应。我想在服务器端从客户端打印此ping,并且如果可能的话也捕获节点服务器发回的ping响应。
我尝试使用
socket.on("ping", function(data) {
console.log("received ping");
});
socket.on("pong", function(data) {
console.log("received pong");
});
在客户端和服务器端,但我无法捕获它们
答案 0 :(得分:3)
此代码段可以在服务器上运行。基础engine.io server socket的文档指定了事件监听器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');
});
原来这些事件的engine.io文档是错误的。参数不是type
和data
,根据{{3的来源,它是包含属性packet
和type
的单个参数data
}和the packet
event。