自定义乒乓socket.io

时间:2016-02-21 22:10:39

标签: node.js socket.io

当您打开chrome dev工具时,在我们的websocket的“frames”选项卡中,您会注意到定期数据发送 - 接收(客户端请求称为“ping”,服务器响应称为“pong”)。 好吧,在socket.io v.1.4.5中你会看到这些:

2
3
2
3
2
3

等等。我可以在这些定期交易中附加一些数据吗?我想这样做:

2['ping',{data:data}]
3['pong',{data:data}]

我已经发现:

  1. 由于某些原因,客户无法通过socket.emit('ping',{}) 本身
  2. 服务器无法检测到类似的事件 socket.on('ping',function)
  3. 重点是让那些乒乓球更有意义并且一石二鸟。

2 个答案:

答案 0 :(得分:1)

我并不熟悉socketeio或websockets的引擎盖工作,但我真的怀疑你可以扩展socketio发送的那些轮询事件。最重要的是,我认为修补那些对你的socketio解决方案不健康,最好保持原样,并根据需要实现你的自定义事件。

P.S。 socketio不会阻止您使用“ping”和“pong”作为自定义事件名称。仔细检查您的代码:)

答案 1 :(得分:0)

只需添加oleksii-shnyra发布的答案。

根据Socket.IO Docs,有一些保留事件,不应该使用。

如果您使用的是socket.io-client,则可以听取Ping' Ping' &安培; '傍'客户端的事件。你会看到Pong'事件。例如下面的代码,

var socket = require('socket.io-client')('Some_IP_Address:PORT');

socket.on('connect', function() {
  console.log("Client is Connected");
});

socket.on('pong', function(data) {
  console.log('Received Pong: ', data);
});

我在控制台中收到了以下输出。

Client is Connected
Received Pong:  143
Received Pong:  143
Received Pong:  148
Received Pong:  147

根据文件,' 143'是' ms'因为' ping'是从客户发送的。

注意:您可以收听' Ping'事件也是如此,但它通常会返回空数据。

但是,您无法在服务器端收听Ping / Pong事件。