Ich verwende diesen AutobahnJS-Code im Knoten, um Daten von einem Dienst zu empfangen. Es funktioniert großartig, mehrere Ereignisse pro Sekunde zu erhalten. Wenn mein Internet vorübergehend getrennt wird, erkennt Autobahn die verlorene Verbindung nicht und schreibt nicht "Websocket connection droped" an die Konsole, es hängt einfach. Unbegrenzt.autobahn (knoten) nicht entdeckt fallen lassen verbinden, unendlich warten, kann ich ein timeout setzen?
Gibt es ein Zeitlimit, das eingestellt werden kann, wenn nach 1 Minute keine Daten eintreffen, erneut verbinden? Oder kann ich eine setTimeout-Funktion verwenden, um einen Server zu pingen, und wenn kein pong zurückkommt, schließe die Verbindung und versuche, sie wieder zu öffnen?
Ich googelte, bis meine Finger bluteten, aber ich fand keine einfache Antwort auf diese Frage. Vielen Dank!
connection.onopen = function(session) {
session.subscribe(arg, someEvent);
}
connection.onclose = function() {
console.log("Websocket connection dropped");
}
connection.open();
Wenn auf dem Node ausgeführt wird, verwendet AutobahnJS die Bibliothek "ws". Diese Bibliothek kann WebSocket ping/pong verfügbar machen (oder auch nicht). Wenn es so wäre, könnten wir es in AutobahnJS verwenden. Wie Gzost jedoch erwähnt, stellt die WebSocket-API des W3C-spezifizierten Browsers diese einfach nicht zur Verfügung. Browser könnte (oder würde vielleicht nicht) selbst WS Ping/Pong machen (zumindest in der Vergangenheit, IE tat dies). – oberstet
Ich habe ein Intervall hinzugefügt, um zu überprüfen, wann ich die letzten Daten erhalten habe und wenn zu viel Zeit verstrichen ist, habe ich eine connection.close() und dann in onclose() erneut eine connection.open() gesendet. Für das Leben von mir konnte ich es nicht zur Arbeit bringen. Wenn die Verbindung geschlossen wird, werden Fehler ausgegeben, wenn Sie versuchen, sie erneut zu öffnen?!? Ich habe Autobahn Python ausprobiert, aber die Dokumentation und die Beispiele sind so überall, dass ich nicht herausfinden konnte, wie man ProtocolOptions auf AutoPing setzt. Ich gab schließlich auf und hackte es: Nachdem setInterval einen Timeout-Exit() festgelegt hat, wickle es in ein "while: do done" Bash-Skript. – heapoverflow
Ich wäre so sehr dankbar für einen funktionierenden Knoten oder Pythong Beispiel !! – heapoverflow