Sto cercando di implementare un WebSocket con un fallback polling. Se la connessione WebSocket ha esito positivo, readyState
diventa 1, ma se non riesce, readyState
è 3 e dovrei iniziare il polling.Come attendere readyState di un WebSocket per cambiare
Ho provato qualcosa di simile:
var socket = new WebSocket(url);
socket.onmessage = onmsg;
while (socket.readyState == 0)
{
}
if (socket.readyState != 1)
{
// fall back to polling
setInterval(poll, interval);
}
mi aspettavo socket.readyState
per aggiornare in modo asincrono, e mi permette di leggere immediatamente. Tuttavia, quando eseguo questo, il mio browser si blocca (l'ho lasciato aperto per circa mezzo minuto prima di mollare).
Ho pensato che forse c'era un evento onreadyStateChanged
, ma non ne ho visto uno nel riferimento MDN.
Come dovrei attuando questo? Apparentemente un ciclo vuoto non funzionerà, e non c'è nessun evento per questo.
Erm ... Mi può mancare qualcosa, ma perché non usi 'socket.onopen'? – raina77ow
@ raina77ow Non penso che 'socket.onopen' si attivi se il socket non viene mai aperto. –
Sì, ma cosa dovrebbe fare il tuo codice in questo caso? 'Aspettando che la presa sia aperta' non è ovviamente una risposta, suppongo.) – raina77ow