4

socket.ioのドキュメントには、ハートビートを次のように無効にできると記載されています。

io.disable('heartbeats');

残念ながら、これによりヒアビートの送信が停止するように見えますが、クライアントはヒアビートを送信していないときに切断されます。

以下も機能しません。

io.set('heartbeats', false);

いくつかの間隔を0に設定しようとしましたが、成功しませんでした。

io.set('heartbeat timeout', 0);
io.set('heartbeat interval', 0);

ハートビートを適切に無効にする可能性のあるものについて何か提案はありますか?

4

3 に答える 3

4

コードは

io.disable('heartbeats');

socket.iov0.8.7で正常にテストされました

無効にせずに

debug - emitting heartbeat for client 299833185260419425
debug - websocket writing 2::
debug - set heartbeat timeout for client 299833185260419425
debug - got heartbeat packet
debug - cleared heartbeat timeout for client 299833185260419425
debug - set heartbeat interval for client 299833185260419425

無効にすることで

デバッグ-クライアント承認

info  - handshake authorized 1205975980561506547
debug - setting request GET /socket.io/1/websocket/1205975980561506547
debug - client authorized for 
debug - websocket writing 1::
debug - websocket writing 5:::{"name":"news","args":[{"hello":"foo"}]}
于 2011-12-22T11:59:33.033 に答える
3

ハートビートに問題があります。私は最新のsocket.ioとノード0.6.Xを持っています

   info  - socket.io started
   debug - client authorized
   info  - handshake authorized 734447051478827620
   debug - setting request GET /socket.io/1/websocket/734447051478827620
   debug - client authorized for
   debug - websocket writing 1::
   debug - websocket writing 5:::{"name":"hello"}
   info  - transport end (socket end)
   debug - set close timeout for client 734447051478827620
   debug - cleared close timeout for client 734447051478827620
   debug - discarding transport

// server code
var io = require('socket.io').listen(8080);
io.disable('heartbeats');

io.sockets.on('connection', function (socket) {
  socket.emit('hello');
});

クライアントは接続直後に切断されます。

于 2012-05-06T14:43:44.850 に答える
1

socket.ioのログレベルを設定します。ログレベル2では、各ソケットのすべてのハートビートは表示されませんが、ハンドシェイクと切断のみが表示されます。

io.set('ログレベル'、2);

于 2014-06-05T07:38:20.497 に答える