Sto cercando di implementare wrapper websocket fail-safe. E il problema che ho riguarda gli errori di timeout. La logica dovrebbe essere: se il socket non viene aperto durante $ timeoutInMiliseconds, deve essere chiuso e riaperto $ N volte.Timeout connessione WebSocket
Sto scrivendo qualcosa del genere.
var maxReconects = 0;
var ws = new WebSocket(url);
var onCloseHandler = function() {
if (maxReconects < N) {
maxReconects++;
// construct new Websocket
....
}
};
ws.onclose = onCloseHandler;
var timeout = setTimeout(function() {
console.log("Socket connection timeout",ws.readyState);
timedOut = true;
ws.close(); <--- ws.readyState is 0 here
timedOut = false;
},timeoutInMiliseconds);
Ma il problema sta gestendo timeout WebSockets modo giusto - se sto cercando di chiudere presa nonconnected Ricevo avvertimento in cromo:
"connessione WebSocket a 'WS: //127.0.0.1: 9010/timeout 'fallito: WebSocket viene chiuso prima che venga stabilita la connessione. "
E non ho idea di come evitarlo - l'interfaccia ws non ha alcuna funzione di interruzione.
L'altro errore che ho provato non è quello di chiudere il socket in timeout se non connesso ma semplicemente contrassegnarlo come non usato di più e chiuderlo se riceve readyState più di uno - ma può produrre possibili perdite e complicato per un compito così semplice