我正在使用Nodejs和Socket.io。當客戶端連接時,將創建新的JavaScript對象。在斷開連接的情況下移除對象socket.io
做這些東西只是永遠留戀嗎?當客戶端斷開連接時它們是否應該被刪除或刪除?是否有可能刪除一個對象?我知道刪除將無法正常工作...
謝謝 - 我想這是一個更普遍的問題,任何建議都會非常有幫助。
謝謝!
我正在使用Nodejs和Socket.io。當客戶端連接時,將創建新的JavaScript對象。在斷開連接的情況下移除對象socket.io
做這些東西只是永遠留戀嗎?當客戶端斷開連接時它們是否應該被刪除或刪除?是否有可能刪除一個對象?我知道刪除將無法正常工作...
謝謝 - 我想這是一個更普遍的問題,任何建議都會非常有幫助。
謝謝!
如果你沒有清理,那麼是的,他們會永遠呆在那裏,因爲我認爲你讓他們成爲全球。
你應該清理一次,用戶斷開通過綁定到disconnect
事件偵聽器:
var clients = {}
sockets.on('connection', function(socket) {
clients[socket.id] = socket;
socket.on('disconnect', function() {
delete clients[socket.id];
});
});
我想接受的答案是不是真正解決問題。 當你這樣做:
io.on('connection', function(socket){
socket.on('event', function(){
console.log('event fired');
});
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
套接字事件偵聽器io.on內()創建的回調。斷開後,這些事件監聽器沒有真正得到刪除.. 我應該做這樣的事情:
socket.on('disconnect', function(){
delete socket.namespace.sockets[this.id];
console.log('user disconnected');
});
除非socket.io內部取出io.on內的所有eventlisenters()回調。 Eventlisteners堅持
在嚴格模式下不允許刪除是否有另一種方法來實現這一點? – 2017-03-24 14:32:38
太好了,謝謝!我假設我可以使用同樣的方法來處理'客戶'以跟蹤其他對象嗎?在'套接字'功能之外還有其他幾個對象被創建。 – dzm 2012-03-29 03:46:46
jup!有些人做的,他們在「套接字」變量內添加對象,並自動銷燬。 'socket.data =「foo」'然後客戶端只有一個id到那個套接字。 – 2012-03-29 04:27:08
完美,這是一個好主意。再次感謝! – dzm 2012-03-29 13:17:57