2013-02-11 871 views
2

我尝试编写连接到WebSocket服务器的函数。此服务器关闭时会发生此问题。这个函数应该等待它,即使很长时间,但它不应该消耗100%的CPU。这里是我的代码:建立WebSocket连接时100%的CPU消耗

var state = { 
    connected: false 
}; 

var settings = { 
    host: 'localhost', 
    port: 1988 
}; 

function connect(settings) { 
    try { 
     var socket; 
     var host = 'ws://' + settings.host + ':' + settings.port; 
     var socket = new WebSocket(host); 

     socket.onopen = function() { 
      state.connected = true; 
     } 
     // socket.onmessage 
     socket.onclose = function() { 
      state.connected = false; 
      connect(settings); 
     } 

    } catch(e){ 
     console.log(e); 
    } 
} 

所以我需要的间隔以某种方式传递给WebSocket的构造,看起来它只是试图打开一个循环的连接,查杀性能。我怎样才能做到这一点?

回答

2

当您尝试连接时,套接字会立即关闭,导致您尝试再次尝试连接。添加尝试间隔:

socket.onclose = function() { 
    state.connected = false; 
    setInterval(function() { 
     connect(settings); 
    }, 1000); 
} 
+0

哦,我是个傻瓜:)。我认为这还是一个准备好的状态...... – ciembor 2013-02-11 03:58:41

相关问题