我一直在用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 :(得分: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 :(得分: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>