2016-05-13 6 views
-1

Ich bin ganz neu zu django-websocket-redis und als normal habe ich einige Probleme konfrontiert.Ermitteln, ob Re-Verbindung in Redis WebSocket auf Client-Seite

Ich habe eine Kommunikation vom Client zum Server hergestellt und umgekehrt using Websockets for Redis.

Ich mag würde erkennen, wenn ein Client reconnected oder disconnected vom Server ist (das heißt, wenn die Verbindung geschlossen wird und/oder wieder geöffnet), so dass ich einen Mechanismus implementieren, wo Kunden für die Nachfrage verantwortlich sind „, was habe ich verpasst "wenn sie sich wieder verbinden und dann die Daten abfragen, die sie verpasst haben.

Derzeit ist mein Client-Code wie folgt (fiddle here). Ich kann feststellen, wenn die Verbindungen zum ersten Mal hergestellt werden, aber nicht, wenn Websocket Verbindung unterbrochen und wieder verbunden ist.

Irgendwelche Ideen, wie kann ich das tun?

+0

Wenn etwas nicht klar genug ist, bitte –

+0

fragen Sie die Flagge verwenden können die Sie festlegen, sobald die Verbindung getrennt wird. Und während der Wiederverbindung können Sie das Flag überprüfen und feststellen, ob die Verbindung unterbrochen oder wieder hergestellt wurde. –

+0

Was Sie vorgeschlagen haben, macht Sinn (natürlich), die Sache ist, dass ich keinen "Alarm" bekomme, wenn der Server getrennt ist. Hier ist ein Screenshot, um die Dinge einfacher zu machen http://prntscr.com/b3jpkv –

Antwort

1

Das Problem ist mit dem Funktionsnamen, den Sie festgelegt haben, sollte es nicht on_connecting() sein, stattdessen sollte es nur der Name der Funktion on_connecting sein.

Unten ist der Code, ersetzen Sie Ihren Code mit unter einem und überprüfen Sie, ob das funktioniert.

var ws4redis = WS4Redis({ 
    uri: '{{ WEBSOCKET_URI }}foobar?subscribe-broadcast&publish-broadcast&echo', 
    receive_message: receiveMessage, 
    connecting: on_connecting, 
    connected: on_connected, 
    error: on_error, 
    disconnected: on_disconnected, 
    close: on_close, 
    open: on_open, 
}); 

Wenn Sie schreiben on_connecting() die Funktionen aufgerufen wurden, wenn die WS4redis initialisiert worden, warum Sie das Konsolenprotokoll für alle Ereignisse sehen

+0

@Paschalidis: Lassen Sie mich wissen, ob obige Lösung funktioniert. Boz kann ich nicht wirklich laufen und verifizieren. –

+0

Ich hatte die Funktionen ohne Klammern, aber dann wurde keine der Funktionen ausgelöst. Verrückt oder ? –

+0

@PaschalisdisChristos: Wenn Sie Klammern setzen, ist es Funktionsaufruf, und wenn Sie nur den Funktionsnamen verwenden, weisen Sie die Funktion zu, die aufgerufen wird, sobald das Ereignis eintritt. In Ihrem Fall das verbundene Ereignis. –