ポーリングへのフォールバックを使用して 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
非同期で更新して、すぐに読めるようにすることを期待していました。ただし、これを実行すると、ブラウザーがフリーズします (あきらめる前に約 30 分開いたままにしました)。
おそらくonreadyStateChanged
イベントがあると思いましたが、MDN リファレンスには見当たりませんでした。
これをどのように実装すればよいですか?どうやら空のループは機能せず、このためのイベントはありません。