1
我一直在使用socketIO進行大量測試,並且遇到了處理應用程序僅處於脫機狀態的情況。該文檔沒有提供有關此問題的真正見解。如何處理應用程序未運行時的socketIO
所以,如果我跑我的網站和應用程序節點根本就沒有運行,執行console.log給出:
GET http://[url]:[port]/socket.io/socket.io.js
Uncaught ReferenceError: io is not defined
這並不奇怪,怎麼過什麼,我不明白是如何處理這些錯誤,並簡單地讓腳本嘗試重新連接,直到它終於重新連接(如果曾經)。
我的劇本是這樣的:
<script src="http://[url]:[port]/socket.io/socket.io.js"></script>
<script>
windows.onload = function()
{
socketio = io.connect("http://[url]:[port]");
socketio.on('connecting', function() {
console.log('trying to connect');
});
socketio.on('connect', function() {
console.log('connected');
});
}
</script>
有沒有一種方法來處理這類問題?
如果我添加一個新的
有幾個事件可以綁定到。
對於暴露事件的完整列表,點擊這裏:exposed socket.io events
編輯
啊,我很抱歉。我誤解了你的問題。我以爲你想在socket服務器脫機時處理。如果你想處理無法獲取socket.io客戶端腳本,也許你可以檢查
socket
是否爲null或未定義,並處理這種想法。然後還會啓動一個setTimeout
函數,在等待期過後嘗試異步加載腳本,然後檢查socket
是否仍未定義或爲空。或者,如其他答案所示,將socket.io客戶端庫與您的HTML頁面的其餘部分一起打包。來源
2013-12-23 21:07:43 zero298
如果節點應用程序未運行,我不相信它會首先收到'connect_failed' .. – Sir
啊,我很抱歉。我誤解了你的問題。你是對的,你沒有'套接字'來調用開始的事件。正如另一個答案所說,將客戶端庫打包到HTML頁面將會是一個更好的主意。 – zero298