我正在尝试实现一个带有轮询回退的 WebSocket。如果 WebSocket 连接成功,则readyState
变为 1,如果失败,readyState
则为 3,我应该开始轮询。
我试过这样的事情:
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 参考中看到一个。
我应该如何实施?显然,空循环不起作用,并且没有事件。