這個賞金已經結束。此問題的答案有資格獲得 50聲望賞金。賞金寬限期在5 小時后結束。 Interface正在從有信譽的來源尋找答案。
我使用帶有 NET 類的 node.js 來連接多個 Rasperry Pi。
//Server
const net = require('node:net');
const server = net.createServer();
//Client
const tcpConnect = net.createConnection(SERVERINFO);
因此,我可以輕松注冊多個客戶端,打開/關閉流。一切正常,沒有任何問題。
但現在我注意到了回呼。
tcpConnect.on('end', () => { console.log('end triggered') });
tcpConnect.on('close', () => { console.log('close triggered') });
tcpConnect.on('error', () => { console.log('error triggered') });
如果服務器突然斷電(例如電源被拉斷),請不要作業。客戶端不會觸發錯誤/結束或關閉,因此我無法正確關閉連接。因此,在下一次嘗試將內容寫入現有流之前不會觸發錯誤。但這對我來說不是一個選擇,尤其是對于“在線監控”。
有誰知道立即識別服務器關閉的方法?
uj5u.com熱心網友回復:
您需要啟用 TCP keep-alives 以使客戶端檢測到服務器不再回應,并且您可以調整它檢查空閑連接的頻率。(我在這個答案的開頭寫了一個語言通用描述。)
在節點中,您似乎可以這樣做:socket.setKeepAlive(true),即當套接字空閑時,此客戶端檢測服務器已消失:
//Client
const tcpConnect = net.createConnection(SERVERINFO);
tcpConnect.setKeepAlive(true);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/479178.html
標籤:javascript 节点.js 插座 错误处理 tcp
