我仍然是JavaScript的新手,我正在尝试使用WebSockets。我有一个应用程序的工作骨架,尽管它仍然存在我需要解决的问题。
如何向应用程序的其余部分发出信号,该应用程序可以使用?
socket = new WebSocket( 'wss://' + window.location.host + '/ws/manager/' );
while (socket.readyState != 1){
// wait loop
}
创建插座时,它会立即返回,但尚未准备好进行通信。我的第一个想法是,我在检查状态时只是循环,这是我当前的解决方案,但这只是燃烧了CPU,并且会使应用程序无反应。引入延迟可以解决一些响应能力,但是在此处显示的是自己的问题:javaScript版本的sleep((是什么?例如 。我也知道,循环等待是一个否。
我看到的另一个解决方案是使用setTimeout()
和一个回调来继续执行,但是我觉得这对代码阅读和写作非常破坏,并且可能仍然没有以更好的方式解决问题。p>这将是一个一页应用程序,由于AJAX或常规HTTP所需的连接数量,服务器通信将几乎完全使用Web插座进行。总的来说,我并不真正介意该应用会变得没有响应,因为没有Web插座,它将是无用的。
您可以在Websocket上收听" onopen"事件:
socket = new WebSocket('wss://' + window.location.host + '/ws/manager/');
socket.addEventListener('open', function (event) {
socket.send('Hello socket server!');
// Do more stuff with your socket
})
这样,您的应用程序将在加载Websocket时响应迅速,并且您不会浪费任何CPU。
有关Websocket API的更多信息,请在此处检查:https://developer.mozilla.org/en-us/docs/web/api/websocket
希望这会有所帮助!