Module websocket_client

Erlang websocket client (FSM implementation).

Behaviours: gen_fsm.

This module defines the websocket_client behaviour.
Required callback functions: init/1, onconnect/2, ondisconnect/2, websocket_handle/3, websocket_info/3, websocket_terminate/3.

Authors: Jeremy Ong, Michael Coles.

Description

Erlang websocket client (FSM implementation)

Data Types

state_name()

state_name() = atom()

Function Index

cast/2
code_change/4
connected/2
connected/3
disconnected/2
disconnected/3
handle_event/3
handle_info/3
handle_sync_event/4
handshaking/2
handshaking/3
init/1
send/2
start_link/3Start the websocket client.
start_link/4Start the websocket client.
start_link/5Start the websocket client see gen_fsm:start_link(FsmName, Module, Args, Options) FsmName = {local,Name} | {global,GlobalName} | {via,Module,ViaName} Name = atom() GlobalName = ViaName = term() Module = atom().
terminate/3

Function Details

cast/2

cast(Client::pid(), Frame::websocket_req:frame()) -> ok

code_change/4

code_change(OldVsn::term(), StateName::state_name(), Context::#context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}, Extra::any()) -> {ok, state_name(), #context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}}

connected/2

connected(X1, Context) -> any()

connected/3

connected(Event, From, Context) -> any()

disconnected/2

disconnected(Event, Context0) -> any()

disconnected/3

disconnected(Event, From, Context0) -> any()

handle_event/3

handle_event(Event::term(), State::state_name(), Context::#context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}) -> {next_state, state_name(), #context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}} | {stop, Reason::term(), #context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}}

handle_info/3

handle_info(Info::term(), KAState::state_name(), Context::#context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}) -> {next_state, state_name(), #context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}} | {stop, Reason::term(), #context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}}

handle_sync_event/4

handle_sync_event(Event::term(), X2::{From::pid(), any()}, State::state_name(), Context::#context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}) -> {next_state, state_name(), #context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}} | {reply, Reply::term(), state_name(), #context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}} | {stop, Reason::term(), #context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}} | {stop, Reason::term(), Reply::term(), #context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}}

handshaking/2

handshaking(Event, Context) -> any()

handshaking/3

handshaking(Event, From, Context) -> any()

init/1

init(X1::[any()]) -> {ok, state_name(), #context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}}

send/2

send(Client, Frame) -> any()

start_link/3

start_link(URL::string(), Handler::module(), Args::list()) -> {ok, pid()} | {error, term()}

Start the websocket client

URL : Supported schema: (ws | wss) Handler: module() Args : arguments to pass to Handler:init/1

start_link/4

start_link(URL, Handler, HandlerArgs, Opts) -> any()

Start the websocket client

Supported Opts: - {keepalive, integer()}: keepalive timeout in ms - {extra_headers, list({K, V})}: a kv-list of headers to send in the handshake (useful if you need to add an e.g. 'Origin' header on connection. - {ssl_verify, verify_none | verify_peer | {verify_fun, _}} : this is passed through to ssl:connect/2,3.

start_link/5

start_link(FsmName, URL, Handler, HandlerArgs, Opts) -> any()

Start the websocket client see gen_fsm:start_link(FsmName, Module, Args, Options) FsmName = {local,Name} | {global,GlobalName} | {via,Module,ViaName} Name = atom() GlobalName = ViaName = term() Module = atom()

terminate/3

terminate(Reason::term(), StateName::state_name(), Context::#context{wsreq = websocket_req:req(), transport = #transport{}, headers = [{string(), string()}], target = {Proto::ws | wss, Host::string(), Port::non_neg_integer(), Path::string()}, handler = {module(), HState::term()}, buffer = binary(), reconnect = boolean(), reconnect_tref = undefined | reference(), ka_attempts = non_neg_integer()}) -> ok


Generated by EDoc