2017-06-24 2 views
0

Ich versuche, diese Websocket-Client-Bibliothek zu verwenden, aber mit wenig Erfolg. Erlang Websocket-Client mit Cowboy-Server

Wenn jemand diese Bibliothek verwendet, um einen Client zu erstellen, der mit einem Remote-Server kommuniziert, wie konnten Sie Nachrichten senden?

Die grundlegende Verwendung zeigt dies zu nennen eine Verbindung inititate,

websocket_client:start_link("wss://echo.websocket.org", ?MODULE, []). 

und werfen/2 eine Nachricht an einen Remote-Server zu senden.

websocket_client:cast(self(), {text, <<"message 1">>}). 

Allerdings, wenn ich versuche, sonst die gleiche Funktion zu verwenden, wo im Code einen Text/Binärrahmens auf Remote-Server zu senden, hilft es nicht.

Gibt es etwas, das fehlt?

Danke!

Antwort

1

Beachten Sie, dass der erste Parameter zu websocket_client:cast/2 die PID für den websocket_client Prozess sein muss. Sie können die pid vom start_link Aufruf, zum Beispiel erhalten:

{ok, Pid} = websocket_client:start_link("wss://echo.websocket.org", ?MODULE, []). 

Und eine Nachricht an den Remote-Server werfen:

websocket_client:cast(Pid, {text, <<"message 1">>}). 

Im Beispielcode für das websocket_client Projekt cast aus dem aufgerufen wird, init Funktion, in diesem Fall können sie self() verwenden, da die init Funktion tatsächlich vom Websocket-Client-Prozess ausgeführt wird.

Ebenso, wenn Sie cast aus Ihrem websocket_handle/websocket_info Callback-Funktionen aufrufen können Sie self() da diese werden auch von der websocket Client-Prozess genannt verwenden.