HTTP.WebSocket (http_web_socket v0.10.0)

View Source

Browser-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{}}

Plain Elixir binaries are sent as text frames. Use array_buffer/1 or HTTP.Blob for binary frames.

Summary

Types

t()

@type t() :: %HTTP.WebSocket{
  pid: pid() | nil,
  ref: reference() | nil,
  url: String.t() | nil
}

Functions

array_buffer(data)

@spec array_buffer(binary()) ::
  HTTP.WebSocket.ArrayBuffer.t() | {:error, :invalid_array_buffer}

binary_type(socket)

@spec binary_type(t()) :: :blob | :array_buffer

buffered_amount(socket)

@spec buffered_amount(t()) :: non_neg_integer()

close(socket)

@spec close(t()) :: :ok | {:error, term()}

close(socket, code)

@spec close(t(), non_neg_integer()) :: :ok | {:error, term()}

close(socket, code, reason)

@spec close(t(), non_neg_integer() | nil, String.t()) :: :ok | {:error, term()}

closed()

@spec closed() :: 3

closing()

@spec closing() :: 2

connecting()

@spec connecting() :: 0

extensions(socket)

@spec extensions(t()) :: String.t()

new(url, protocols \\ [], init \\ [])

@spec new(String.t() | URI.t(), String.t() | [String.t()], keyword() | map()) ::
  t() | {:error, term()}

open()

@spec open() :: 1

protocol(socket)

@spec protocol(t()) :: String.t()

ready_state(socket)

@spec ready_state(t()) :: 0 | 1 | 2 | 3

send(socket, data)

@spec send(t(), String.t() | HTTP.Blob.t() | HTTP.WebSocket.ArrayBuffer.t()) ::
  :ok | {:error, term()}

set_binary_type(socket, binary_type)

@spec set_binary_type(t(), :blob | :array_buffer) :: :ok | {:error, term()}

url(web_socket)

@spec url(t()) :: String.t() | nil