我遵循了一個教程,并且能夠復制/構建一個簡單的實時網路應用程式。我從代碼中理解了一切,除了一件事。“斷開連接”事件。為了簡化,我洗掉了大部分代碼,但它是這樣的:
//server.js
io.on('connection', (socket) => {
//...I removed code from here for simplification
socket.on('disconnect', () => {
socket.broadcast.emit('user-disconnected', users[socket.id]);
delete users[socket.id];
})
})
//client.js
//...a lot of code removed from here for simplification
socket.on('user-disconnected', myname =>
{appendMessage(`${myname} left`)}
)
令我驚訝的是,這段代碼有效,當用戶關閉視窗或離開頁面時,它會附加用戶留下的訊息,但它如何知道用戶離開了?據我所知,“斷開”這個詞只是一個沒有其他語意含義的字串,對吧?我的意思是,它不像 addEventListener('click') 函式,其中 'click' 是一個內置事件,它意味著什么。據我了解,socket.io 中的事件是程式員為幫助服務器/客戶端通信而“編造”的詞,對吧?因此,我不明白離開頁面如何在此處觸發“斷開連接”事件。有人可以啟發我嗎?
uj5u.com熱心網友回復:
該disconnect事件是一個內置的 socket.io 事件,它會告訴您客戶端何時斷開連接。
socket.io 客戶端 JavaScript 使用beforeunload視窗上的事件偵聽器,該偵聽器在選項卡關閉之前執行,然后向服務器發送“我要死了”訊息,然后消失。
服務器也可以嘗試 ping 客戶端,如果沒有回傳,哎呀,斷開連接。
另一方面,客戶端可以手動斷開與服務器的連接:
socket.disconnect();
這會向服務器發送斷開連接訊息,然后斷開連接。您可以重新連接:
socket.connect();
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/408734.html
標籤:
下一篇:在ReactJS中查看后端資料
