2011-09-08 92 views
4

socket.io documentation提到,心跳可以像這樣被禁用:禁用Socket.io心跳(Node.js的)

io.disable('heartbeats');

不幸的是,雖然這似乎被髮送停止hearbeats,該客戶端仍然斷開當他們不發送聽力。

下不起作用或者:

io.set('heartbeats', false);

我已經嘗試了一些時間間隔設置爲0,沒有成功:

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

上什麼可能正確禁用心跳有什麼建議?

+1

您的最終目標是什麼? – EhevuTov

+0

兩個矛盾的答案:/ – UpTheCreek

+0

請注意,我的問題是從9月8日'11,失效機制可能已經被修復了。 – Tom

回答

4

的代碼是

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"}]} 
+0

只是偶然發現了這一點。湯姆是否確定它在工作?我不認爲這與他所說的他試圖無效的工作有什麼不同。 – NateDSaint

+0

這對我來說是最新的0.9.X引起的錯誤,但是在將socket.io切換到0.8.7後,您提到它可以工作......我假設它是某處的錯誤。 – idolize

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'); 
}); 

客戶端連接後立即斷開連接。

0

設置socket.io的日誌級別,與日誌級別2,我們不會看到每個插槽的所有心跳,但只有握手和斷開

io.set(「日誌級別」,2);