首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在服务器端观察socketio客户端的ping

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

Stack Overflow用户
提问于 2015-05-13 06:24:48
回答 2查看 11.2K关注 0票数 5

我知道socketio客户端每25秒发送一个ping (心跳间隔),并从服务器获得一个响应。我想从服务器端的客户端打印这个ping,如果可能的话,还可以捕获节点服务器发送的ping响应。

我试着用

代码语言:javascript
代码运行次数:0
运行
复制
socket.on("ping", function(data) {
    console.log("received ping");
});
socket.on("pong", function(data) {
    console.log("received pong");
});

无论在客户端还是服务器端,我都无法捕捉到它们。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-13 06:36:23

这个片段可以在服务器上运行。基础engine.io服务器套接字的文档指定事件侦听器packetpacketCreate的参数,该对象位于socket.conn上。

代码语言:javascript
代码运行次数:0
运行
复制
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,而是包含属性typedata的单个参数packet,根据事件事件的源代码。

票数 10
EN

Stack Overflow用户

发布于 2022-09-20 07:30:54

我已经让它起作用了,我们只需要扭转它。

代码语言:javascript
代码运行次数:0
运行
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30207156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档