我知道socketio客户端每25秒发送一个ping (心跳间隔),并从服务器获得一个响应。我想从服务器端的客户端打印这个ping,如果可能的话,还可以捕获节点服务器发送的ping响应。
我试着用
socket.on("ping", function(data) {
console.log("received ping");
});
socket.on("pong", function(data) {
console.log("received pong");
});
无论在客户端还是服务器端,我都无法捕捉到它们。
发布于 2015-05-13 06:36:23
这个片段可以在服务器上运行。基础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');
});
事实证明,这些事件的engine.io文档是错误的。这些参数不是type
和data
,而是包含属性type
和data
的单个参数packet
,根据事件和事件的源代码。
发布于 2022-09-20 07:30:54
我已经让它起作用了,我们只需要扭转它。
socket.conn.on('packet', (packet) => {
if (packet.type === 'pong') console.log('sending pong');
});
socket.conn.on('packetCreate', (packet) => {
if (packet.type === 'ping') console.log('received ping')
});
在“数据包”事件中,我们得到包类型为pong,而在事件packetCreate
上,则得到packet.type
作为ping。
https://stackoverflow.com/questions/30207156
复制相似问题