2013-12-21 204 views
0

我一直在使用socket.io進行一些nodeJS測試,並注意到當我不運行nodeJS客戶端錯誤時。無法加載資源錯誤處理

如果是的NodeJS不運行我得到這個錯誤在我的客戶的console.log:

Failed to load resource socket.io/socket.io.js 

我的客戶端代碼是這樣的:

<script src = "socket.io/socket.io.js" > < /script> 
<script> 
window.onload = function(){ 

if(typeof io != 'undefined'){ 
    socketio = io.connect("[hidden]:[hidden]");    

    socketio.on('error', function(err) {  
     if(err === 'handshake error') { 
      console.log('handshake error', err); 
     } else { 
      console.log('io error', err); 
     } 
    }); 
} else { 
    console.log('IO not started?'); 
} 

} 
</scirpt> 

所以我不知道 - 最新最好的如何預先檢查nodeJS何時啓動?

回答

0

不是一個完美的解決方案,但是這應該解決您的問題 -

<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 
<script> 
$(document).ready(function(){ 
    var connected = 0; 
    var socket; 
    var timer = setInterval(function(){ 
    loadScript(); 
    },1000); 

    function loadScript() { 
    $.getScript("http://<ip>:<port>/socket.io/socket.io.js") 
     .done(function(script, textStatus) { 
     //console.log(textStatus); 
     if(!connected) { 
      socket = io.connect('http://<ip>:<port>'); 
      connected = 1; 
      clearInterval(timer); 
     } 
     }); 
    } 
}); 
</script> 
+0

這個問題是'io'在'socket.io.js'加載後纔會存在,所以它仍然會產生錯誤。 – Sir

+0

'io'在'socket.io.js'中定義,所以它必須加載以便訪問'io' – vinayr

0

如果服務器返回500,您可以發送請求到您的nodejs服務器。nodejs現在停止。

<script> 
    var socket = io.connect(); 
    socket.on('connect', function(){ 
    console.log('connected'); 
    //do Something...  
    }) 

</script> 

,如果你想檢查socket.io.js是否已完成加載,你可以嘗試使用Require.js http://requirejs.org/

+1

你能用一個基本的例子來擴展你的答案......? – Sir

+0

我已編輯我的評論。 –

+0

我不認爲你閱讀我的問題... – Sir