Ben yedekli WebSocket sarmalayıcıyı uygulamak için çalışıyorum. Ve sahip olduğum problem, zaman aşımı hatalarıyla uğraşıyor. Mantık şu olmalıdır: $ timeoutInMiliseconds sırasında soket açılmamışsa - kapatılmalı ve $ N kez tekrar açılmalıdır.WebSocket Bağlantı zaman aşımı
Böyle bir şey yazıyorum.
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);
Ama zaman aşımı işleyen sorun doğru yolu WebSockets - ı ı krom uyarı alırsınız bağlantısız soket kapatmaya çalışıyorum eğer: ws' olarak
"WebSocket bağlantısı: //127.0.0.1: 9010/zaman aşımı başarısız oldu: Bağlantı kurulmadan önce WebSocket kapalı. "
Ve bunu önlemek için nasıl hiçbir fikrim var - ws arayüzü hiçbir iptal işlevi vardır.
Denediğim diğer bir yaklaşım, bağlantısızsa zaman aşımındaki soketi kapatmak değil, daha fazla kullanılmadığı şekilde işaretlemeli ve birden fazla hazır ready alırsa kapatabilir - ancak olası sızıntılara neden olabilir ve karmaşıktır böyle basit bir görev.