1
我在Node.js上使用'ws',我不確定舊連接被刪除(舊連接斷開連接或空閒連接,這可能是兩個不同的問題)。我是否需要爲這兩種類型手動執行此操作?如何/應該刪除舊的websocket連接?
我在Node.js上使用'ws',我不確定舊連接被刪除(舊連接斷開連接或空閒連接,這可能是兩個不同的問題)。我是否需要爲這兩種類型手動執行此操作?如何/應該刪除舊的websocket連接?
爲此,您需要首先維護服務器端的實時Web套接字連接對象列表。當用戶通過關閉瀏覽器或任何其他方式從Web套接字斷開連接時,您需要從列表中刪除用戶Web套接字連接對象。
服務器端代碼。你可以參考下面的代碼中的成員數組來處理這個。
io.on("connection",function(client)
{
client.on("join",function(data)
{
members[membercount] = client;
membername[membercount] = data;
membercount++;
for(var i =0 ;i <members.length;i++)
{
members[i].emit("message",membername);
}
});
client.on("messages",function(data)
{
for(var i =0 ;i <members.length;i++)
{
if(members[i].id !== client.id)
{
members[i].emit("message",data);
}
}
});
client.on("disconnect",function(data)
{
for(var i =0;i<members.length;i++)
{
if(members[i].id === client.id)
{
membercount--;
members.splice(i,1);
membername.splice(i,1);
}
}
for(var i =0 ;i <members.length;i++)
{
members[i].emit("message",membername);
}
});
});
希望這會有所幫助!!!!!
如果客戶端不能很好地斷開連接呢?心跳失敗還是什麼?斷開連接是否仍然被觸發?謝謝! – Bren
由於它是Web套接字,您的節點js框架將會偵聽打開的Web套接字連接。無論何時瀏覽器關閉,它都會通知您的斷開連接回撥方法。您必須通過刪除已關閉的實例來管理斷開連接。希望爲你工作!!!!!!! –