Skip to main content

lib/http/web_socket/event.ex

defmodule HTTP.WebSocket.Event.Open do
  @moduledoc """
  Browser-compatible WebSocket open event.
  """

  defstruct target: nil, type: "open"

  @type t :: %__MODULE__{target: HTTP.WebSocket.t() | nil, type: String.t()}
end

defmodule HTTP.WebSocket.Event.Message do
  @moduledoc """
  Browser-compatible WebSocket message event.
  """

  defstruct target: nil, type: "message", data: nil, origin: nil

  @type t :: %__MODULE__{
          target: HTTP.WebSocket.t() | nil,
          type: String.t(),
          data: binary() | HTTP.Blob.t() | HTTP.WebSocket.ArrayBuffer.t() | nil,
          origin: String.t() | nil
        }
end

defmodule HTTP.WebSocket.Event.Error do
  @moduledoc """
  Browser-compatible WebSocket error event.
  """

  defstruct target: nil, type: "error", reason: nil

  @type t :: %__MODULE__{
          target: HTTP.WebSocket.t() | nil,
          type: String.t(),
          reason: term()
        }
end

defmodule HTTP.WebSocket.Event.Close do
  @moduledoc """
  Browser-compatible WebSocket close event.
  """

  defstruct target: nil, type: "close", code: nil, reason: "", was_clean: false

  @type t :: %__MODULE__{
          target: HTTP.WebSocket.t() | nil,
          type: String.t(),
          code: non_neg_integer() | nil,
          reason: String.t(),
          was_clean: boolean()
        }
end