有沒有什麼我可以在客戶端檢測到socket.io websocket不可用?沿着線的東西:socket.io/node.js檢測服務器是否發生故障
- 服務器啓動時按通常
- 客戶端連接
- 消息服務器和客戶機之間來回發送
- 服務器關閉(不再可用)
- 警告連接的客戶端服務器不可用
我試着在客戶端添加'錯誤'和'connect_failed'選項,但沒有任何運氣,那些根本沒有觸發。任何人的想法如何我可以實現這一點?
有沒有什麼我可以在客戶端檢測到socket.io websocket不可用?沿着線的東西:socket.io/node.js檢測服務器是否發生故障
我試着在客戶端添加'錯誤'和'connect_failed'選項,但沒有任何運氣,那些根本沒有觸發。任何人的想法如何我可以實現這一點?
disconnect
事件是你想聽的。
var socket = io.connect();
socket.on('connect', function() {
alert('Socket is connected.');
});
socket.on('disconnect', function() {
alert('Socket is disconnected.');
});
謝謝馬修! – Tamas 2013-05-09 23:49:54
我還建議偵聽'connect_error'事件[由cbautista建議](http://stackoverflow.com/questions/16454005/socket-io-node-js-detecting-if-server-is-down#31599873)。這兩個事件很有用,但如果*初始連接嘗試*失敗,它們將不顯示任何內容。 – joeytwiddle 2017-03-06 07:55:00
如果你希望能夠檢測到客戶端無法連接到服務器,然後嘗試使用connect_error
。這適用於socket.io-1.3.5.js。我在https://stackoverflow.com/a/28893421/2262092中發現了這個。
這裏是我的代碼片段:我的發展過程中
var socket = io.connect('http://<ip>:<port>', {
reconnection: false
});
socket.on('connect_error', function() {
console.log('Failed to connect to server');
});
命中此問題,並注意到我每次重啓服務器的時間我的事件調用都增加了一倍,因爲我的插座重新連接。原來我的解決方案,這是不是重複連接是這樣的
var socket = io.connect();
socket.on( '連接',函數(){
的console.log( '用戶連接!');
});
socket.on( '信息',函數(消息){
的console.log(消息);
});
(由KasperTidemann找到這在https://github.com/socketio/socket.io/issues/430)
事實證明,這是我監守放「消息」偵聽器「連接」功能的內部。安置在聽衆之外,解決了這個問題。
無論您身在何處,都歡迎您來到Kasper Tidemann。
繼續前進!
'var sio = io.connect(); sio.socket.on('error',function(reason){ console.error('Unable to connect Socket.IO',reason); });' 你試過了嗎? – 2013-05-09 03:58:04
是的。我確實嘗試過 - 這在客戶端是正確的?也嘗試過「connect_failed」,但沒有運氣。 – Tamas 2013-05-09 04:06:57
AnhTú的解決方案在客戶端嘗試連接到停機的服務器時起作用。所以基本上需要兩個腳本來涵蓋所有可能的場景。 – 2014-04-11 16:22:34