socket.io 文档提到可以像这样禁用心跳:
io.disable('heartbeats');
不幸的是,虽然这似乎阻止了发送心跳,但客户端在不发送心跳时仍然断开连接。
以下也不起作用:
io.set('heartbeats', false);
我尝试将一些间隔设置为 0,但没有成功:
io.set('heartbeat timeout', 0);
io.set('heartbeat interval', 0);
关于什么可以正确禁用心跳的任何建议?
socket.io 文档提到可以像这样禁用心跳:
io.disable('heartbeats');
不幸的是,虽然这似乎阻止了发送心跳,但客户端在不发送心跳时仍然断开连接。
以下也不起作用:
io.set('heartbeats', false);
我尝试将一些间隔设置为 0,但没有成功:
io.set('heartbeat timeout', 0);
io.set('heartbeat interval', 0);
关于什么可以正确禁用心跳的任何建议?
代码是
io.disable('heartbeats');
在 socket.io v0.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"}]}
心跳有问题。我有最新的 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');
});
连接后客户端立即断开连接。
设置 socket.io 的日志级别,日志级别 2 我们不会看到每个套接字的所有心跳,而只会看到握手和断开连接
io.set('日志级别', 2);