我正在尝试实现WebSocket并使用回退来轮询。如果WebSocket连接成功,readyState
变为1,但如果失败,则readyState
为3,我应开始轮询。如何等待WebSocket的readyState更改
我想是这样的:
var socket = new WebSocket(url);
socket.onmessage = onmsg;
while (socket.readyState == 0)
{
}
if (socket.readyState != 1)
{
// fall back to polling
setInterval(poll, interval);
}
我期待socket.readyState
异步更新,并让我立即读它。但是,当我运行这个时,我的浏览器冻结了(在放弃之前我将它打开了大约半分钟)。
我想也许有一个onreadyStateChanged
事件,但我没有在MDN参考中看到一个事件。
我应该如何实施?显然一个空循环将无法工作,并且没有这个事件。
呃...我可能会错过一些东西,但为什么不使用'socket.onopen'? – raina77ow
@ raina77ow如果套接字从不打开,我不认为'socket.onopen'会触发。 –
是的,但在这种情况下你的代码应该做什么?我想,“等待套接字开放”显然不是一个答案。 ) – raina77ow