Module cow_ws

Data Types

close_code()

close_code() = 1000..1003 | 1006..1011 | 3000..4999

deflate_opts()

deflate_opts() = #{level => zlib:zlevel(), mem_level => zlib:zmemlevel(), strategy => zlib:zstrategy(), server_context_takeover => takeover | no_takeover, client_context_takeover => takeover | no_takeover, server_max_window_bits => 8..15, client_max_window_bits => 8..15}

extensions()

extensions() = map()

frag_state()

frag_state() = undefined | {fin | nofin, text | binary, rsv()}

frame()

frame() = close | ping | pong | {text | binary | close | ping | pong, iodata()} | {close, close_code(), iodata()} | {fragment, fin | nofin, text | binary | continuation, iodata()}

frame_type()

frame_type() = fragment | text | binary | close | ping | pong

mask_key()

mask_key() = undefined | 0..4294967295

rsv()

rsv() = <<_:3>>

utf8_state()

utf8_state() = 0..8 | undefined

Function Index

encode_key/1Encode the key into the accept value for the Websocket handshake response.
frame/2Construct an unmasked Websocket frame.
key/0Generate a key for the Websocket handshake request.
make_frame/4Return a frame tuple from parsed state and data.
masked_frame/2Construct a masked Websocket frame.
negotiate_permessage_deflate/3Negotiate the permessage-deflate extension.
negotiate_x_webkit_deflate_frame/3Negotiate the x-webkit-deflate-frame extension.
parse_header/3Parse and validate the Websocket frame header.
parse_payload/9Parse and validate the frame's payload.
validate_permessage_deflate/3Validate the negotiated permessage-deflate extension.

Function Details

encode_key/1

encode_key(Key::binary()) -> binary()

Encode the key into the accept value for the Websocket handshake response.

frame/2

frame(X1::frame(), Extensions::extensions()) -> iodata()

Construct an unmasked Websocket frame.

key/0

key() -> binary()

Generate a key for the Websocket handshake request.

make_frame/4

make_frame(X1::frame_type(), Payload::binary(), CloseCode::close_code(), X4::frag_state()) -> frame()

Return a frame tuple from parsed state and data.

masked_frame/2

masked_frame(X1::frame(), Extensions::extensions()) -> iodata()

Construct a masked Websocket frame.

We use a mask key of 0 if there is no payload for close, ping and pong frames.

negotiate_permessage_deflate/3

negotiate_permessage_deflate(Params::[binary() | {binary(), binary()}], Exts, Opts::deflate_opts()) -> ignore | {ok, iolist(), Exts}

Negotiate the permessage-deflate extension.

negotiate_x_webkit_deflate_frame/3

negotiate_x_webkit_deflate_frame(Params::[binary() | {binary(), binary()}], Exts, Opts::deflate_opts()) -> ignore | {ok, binary(), Exts}

Negotiate the x-webkit-deflate-frame extension.

The implementation is very basic and none of the parameters are currently supported.

parse_header/3

parse_header(Data::binary(), Extensions::extensions(), FragState::frag_state()) -> error | more | {frame_type(), frag_state(), rsv(), non_neg_integer(), mask_key(), binary()}

Parse and validate the Websocket frame header.

This function also updates the fragmentation state according to information found in the frame's header.

parse_payload/9

parse_payload(Data::binary(), MaskKey::mask_key(), Utf8State::utf8_state(), ParsedLen::non_neg_integer(), Type::frame_type(), Len::non_neg_integer(), FragState::frag_state(), Exts::extensions(), X9::rsv()) -> {ok, binary(), utf8_state(), binary()} | {ok, close_code(), binary(), utf8_state(), binary()} | {more, binary(), utf8_state()} | {more, close_code(), binary(), utf8_state()} | {error, badframe | badencoding | badsize}

Parse and validate the frame's payload.

Validation is only required for text and close frames which feature a UTF-8 payload.

validate_permessage_deflate/3

validate_permessage_deflate(Params, Extensions, Opts) -> any()

Validate the negotiated permessage-deflate extension.


Generated by EDoc