1.5.0 - This version may not be safe as it has not been updated for a long time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform
Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.
MIT - MIT LicenseFor basic usage, see examples/sample_ws_handler.erl
:
-module(sample_ws_handler).
-behaviour(websocket_client).
-export([
start_link/0,
init/1,
onconnect/2,
ondisconnect/2,
websocket_handle/3,
websocket_info/3,
websocket_terminate/3
]).
start_link() ->
crypto:start(),
ssl:start(),
websocket_client:start_link("wss://echo.websocket.org", ?MODULE, []).
init([]) ->
{once, 2}.
onconnect(_WSReq, State) ->
websocket_client:cast(self(), {text, <<"message 1">>}),
{ok, State}.
ondisconnect({remote, closed}, State) ->
{reconnect, State}.
websocket_handle({pong, _}, _ConnState, State) ->
{ok, State};
websocket_handle({text, Msg}, _ConnState, 5) ->
io:format("Received msg ~p~n", [Msg]),
{close, <<>>, "done"};
websocket_handle({text, Msg}, _ConnState, State) ->
io:format("Received msg ~p~n", [Msg]),
timer:sleep(1000),
BinInt = list_to_binary(integer_to_list(State)),
{reply, {text, <<"hello, this is message #", BinInt/binary >>}, State + 1}.
websocket_info(start, _ConnState, State) ->
{reply, {text, <<"erlang message received">>}, State}.
websocket_terminate(Reason, _ConnState, State) ->
io:format("Websocket closed in state ~p wih reason ~p~n",
[State, Reason]),
ok.
The above code will send messages to the echo server that count up from 1 through 4. It will also print all replies from the server:
Received msg <<"this is message 1">>
Received msg <<"hello, this is message #2">>
Received msg <<"hello, this is message #3">>
Received msg <<"hello, this is message #4">>
This client implements a cowboy like websocket_client_handler
to
interact with a websocket server. Currently, it can connect via tcp or
ssl via the ws
and wss
protocols. It can also send and receive
contiguous text or binary websocket frames.
The client has been significantly reworked, now backed by gen_statem
. There may still be bugs.
Please report them.
verify_none
by default