2013-12-21 57 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