HTTP.WebSocket (http_web_socket v0.16.0)
View SourceBrowser-like WebSocket client API for Elixir.
Events are delivered as messages to the owner process:
{HTTP.WebSocket, socket, %HTTP.WebSocket.Event.Open{}}
{HTTP.WebSocket, socket, %HTTP.WebSocket.Event.Message{}}
{HTTP.WebSocket, socket, %HTTP.WebSocket.Event.Error{}}
{HTTP.WebSocket, socket, %HTTP.WebSocket.Event.Close{}}HTTP/1 is the default. Select http_version: :http2, :h2c, or :auto
explicitly; http_version/1 reports the negotiated HTTP version, while
protocol/1 continues to report the selected WebSocket subprotocol.
With delivery: :ack, message events include a delivery reference:
{HTTP.WebSocket, socket, %HTTP.WebSocket.Event.Message{}, ref}Call acknowledge/2 after consuming each message. Open, Error, and Close
retain their three-element event envelopes. Receive queues, pending sends,
and fragmented messages have finite configurable limits. Established sessions
default to idle_timeout: :infinity; opening and close deadlines are separate.
Plain Elixir binaries are sent as text frames. Use array_buffer/1 or
HTTP.Blob for binary frames.
For wss connections, pass tls_backend: :ssl | :ex_ssl (or the equivalent
string in a map). When omitted, the shared :http_core TLS backend setting is
captured when the socket is created.
Summary
Functions
Acknowledges an ACK-mode message delivery reference.
Returns the negotiated HTTP version, or nil before establishment.
Returns connection state and bounded delivery and send queue usage.
Types
Functions
Acknowledges an ACK-mode message delivery reference.
@spec array_buffer(binary()) :: HTTP.WebSocket.ArrayBuffer.t() | {:error, :invalid_array_buffer}
@spec binary_type(t()) :: :blob | :array_buffer
@spec buffered_amount(t()) :: non_neg_integer()
@spec close(t(), non_neg_integer()) :: :ok | {:error, term()}
@spec close(t(), non_neg_integer() | nil, String.t()) :: :ok | {:error, term()}
@spec closed() :: 3
@spec closing() :: 2
@spec connecting() :: 0
@spec http_version(t()) :: :http1 | :http2 | nil
Returns the negotiated HTTP version, or nil before establishment.
@spec open() :: 1
@spec ready_state(t()) :: 0 | 1 | 2 | 3
@spec send(t(), String.t() | HTTP.Blob.t() | HTTP.WebSocket.ArrayBuffer.t()) :: :ok | {:error, term()}
Returns connection state and bounded delivery and send queue usage.