2014-05-07 57 views
1

我在socketio wiki上看到了這個。在socket.disconnect()後手動離開房間

請注意,在 斷開事件期間不必調用socket.leave()。這將自動發生。空房間將自動修剪爲 ,因此無需手動刪除它們。

但經過一些測試,它不工作。斷開連接後(服務器端或客戶端),插座不會從他的房間中移除。所以我的問題是,以前的文字是否仍然相關?因爲我的代碼有問題,或者維基未更新。

我試圖檢查內部socketio代碼來檢查了這一點,但我不能跟蹤代碼,看看會發生什麼。

如果文本仍然是相關的,那麼在什麼時候,我們放入on('disconnected')事件的代碼之後還是之前?

謝謝。

回答

1

您可以隨時刪除包含您的套接字的socket.namespace.manager.rooms下的條目。

socket.join(socket.id); 
console.log(socket.namespace.manager.rooms['/'+socket.id]); 
socket.namespace.manager.rooms["/"+socket.id].splice(socket.namespace.manager.rooms["/"+socket.id].indexOf(socket.id),1); 
console.log(socket.namespace.manager.rooms['/'+socket.id]); 

這將返回

[ '36_IcxqkWgBgLfC6p3Yj' ] 
[] 
+0

我同意,這就是我做的,但它是正常的,房間沒有斷開連接後自動離開? – Jujuleder

+1

如何檢查套接字是否在房間中? – Houseman

+0

this.io.of(mynamespace).clients(myroom).length(如果1個套接字仍然連接,如果它已被刪除/是否有錯?) – Jujuleder

相關問題