2017-09-29 2 views
1

Ich folge diesem Beispiel. Ich habe meine ws_handler leicht mit "websocket_handle ({Text, <" < "h" >>}, Zustand) geändert -> {Antwort, {Text, < < "Sie h-in!" >>}, State}; "Erhalten Sie einen Verweis auf Websocket-Verbindung in Cowboy

zu bestätigen, dass ich bestimmte Nachrichten erkennen konnte.

Ich möchte Websocket Verbindungen verfolgen. In https://ninenines.eu/docs/en/cowboy/1.0/guide/ws_handlers/ sehe ich, dass es ein Req-Objekt gibt, aber ich bin mir nicht sicher, nach was ich suchen soll, um zu sehen, was es enthält.

Ich fand diese communicating between http handler and websocket handler in Cowboy; Ich verstehe die Bedeutung der Beispielantwort jedoch nicht.

https://github.com/ninenines/cowboy/tree/master/examples/websocket verwendet pkg_cowboy_commit = 1.0.4 in der erlang.mk, habe ich kein Beispiel mit den neuesten 2.0 Cowboy gefunden.

Ich möchte Websocket Verbindungen über eine ID oder PID in einer Liste zu verfolgen, entfernen Sie eine Referenz, wenn sie trennen, etc. Ich sehe keine Möglichkeit, dies neben dem Senden der ersten Bytes eines Textes auf jeder Nachricht die ID und das scheint falsch zu sein.

Im Gegensatz dazu socket.io zum Beispiel erhalten Sie socket.id - Ich möchte die gleiche Art von Verweis in Erlang.

Antwort

0

Ich denke etwas wie das Erstellen eines Prozesses, der auf den Websocket-Status verweist. Also auf

websocket_init(State) ->

Pass, den Staat zu einem Prozess, und fügen Sie diesen neuen Prozess PID an den Staat des websocket

dann in

websocket_handle({text, Msg}, State) ->

eine benutzerdefinierte {reply, Reply} kann sein gesendet, indem Daten von der PID geladen werden, die mit der benutzerdefinierten Domänenlogik verbunden ist.

Verwandte Themen