Mojolicious und verzögert WebSocket

8

Ich habe dieses Code-Snippet, ich versuche, alle X Sekunden eine Zeichenfolge an den Server zu senden, wie:

%Vor%

AFAIK Mojo hat IO::Loop Event-Schleife benutzt, was meiner Meinung nach mit AnyEvent

in Ordnung sein sollte

Das funktioniert nicht und ich frage mich warum. Wenn ich den AE-Teil entferne und die einfache send auskommentiere, sehe ich die Ergebnisse im Browser.

P.S: Ich experimentiere nur mit WebSockets und Mojo für ein Projekt und muss sowohl Mojo als auch AnyEvent + WebSockets verwenden

    
snoofkin 14.06.2013, 16:41
quelle

1 Antwort

6

Das Problem scheint zu sein, dass die Nachrichtens passieren versucht, bevor die GET-Verbindung zu einem websocket aktualisiert wird. Ich versuche immer noch, es aufzuspüren, in der Zwischenzeit funktioniert das.

%Vor%

Beachten Sie, dass in meinem Beispiel der Debug-Ausgabe zeigt 101 switching protocols , während Beispiel versucht zu rendern echo.html.ep .

Ich habe auch die Vorlage geändert, um die Websocket-URL zu generieren.

UPDATE:

Es scheint, dass, um sich mit einem Websocket zu verbinden, es notwendig ist, ein Ereignis zu abonnieren. In diesem Beispiel abonniere ich ins Ziel Veranstaltung, die Sie ohnehin tun, um mögen den Timer zu stoppen.

%Vor%

UPDATE 2:

Um das Problem zu klären, hat SRI die folgende Dokumentation zu Mojolicious hinzugefügt:

  

Die Verbindung hergestellt wird, wenn Sie mit einem 101-Antwortstatus auf den WebSocket-Handshake reagieren, die automatisch geschieht, wenn Sie ein Ereignis abonnieren mit   "on" oder senden Sie sofort eine Nachricht mit "send".

was die Situation erklärt. Der ursprüngliche Code abonniert weder ein Ereignis noch eine send sofort. In fast allen Fällen machst du mindestens einen der beiden, in diesem Fall aber: -)

    
Joel Berger 14.06.2013, 17:13
quelle

Tags und Links