![](/img/trans.png)
[英]Socket.IO using Node.js and Swift server not detecting connection? [AWARDING SOON]
[英]socket.io/node.js detecting if server is down
我可以在客戶端執行某些操作來檢測到socket.io websocket不可用嗎? 類似於以下內容:
我試圖在客戶端添加'error'和'connect_failed'選項,但是沒有運氣,這些根本沒有觸發。 任何人有什么想法可以實現這一目標?
disconnect
事件是您要監聽的事件。
var socket = io.connect();
socket.on('connect', function () {
alert('Socket is connected.');
});
socket.on('disconnect', function () {
alert('Socket is disconnected.');
});
如果您希望能夠檢測到客戶端無法連接到服務器,請嘗試使用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('connect',function(){
console.log('用戶已連接!');
});
socket.on('message',function(message){
console.log(消息);
});
(在KasperTidemann的https://github.com/socketio/socketio/socket.io/issues/430找到)
原來,這是因為我將“消息”偵聽器放在了“連接”功能中。 將其放在聽眾之外,可以解決此問題。
無論您身在何處,都為Kasper Tidemann喝彩。
繼續!!
connect_error
對我不起作用(使用Apache ProxyPass並返回503)。
如果需要檢測初始失敗的連接,可以執行此操作。
var socket;
try {
socket = io();
}
catch(e) {
window.location = "nodeServerDown.php";
}
服務器關閉時,將用戶重定向到自定義錯誤頁面。
連接一次后,如果需要斷開連接。
你做這個:
socket.on('disconnect', function() {
//whatever your disconnect logic is
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.