Parrhesia.Web.Connection
(parrhesia v0.12.0)
Copy Markdown
Per-connection websocket process state and message handling.
Summary
Types
@type overflow_strategy() :: :close | :drop_oldest | :drop_newest
@type t() :: %Parrhesia.Web.Connection{ auth_challenge: String.t() | nil, auth_challenges: GenServer.server() | nil, auth_max_age_seconds: pos_integer(), authenticated_pubkeys: MapSet.t(String.t()), drain_scheduled?: boolean(), event_ingest_count: non_neg_integer(), event_ingest_window_seconds: pos_integer(), event_ingest_window_started_at_ms: integer(), ingest_limiters: %{ relay: GenServer.server() | nil, remote_ip: GenServer.server() | nil, pubkey: GenServer.server() | nil }, listener: map() | nil, max_event_bytes: pos_integer(), max_event_ingest_per_window: pos_integer(), max_frame_bytes: pos_integer(), max_outbound_queue: pos_integer(), max_subscriptions_per_connection: pos_integer(), negentropy_sessions: GenServer.server() | nil, outbound_drain_batch_size: pos_integer(), outbound_overflow_strategy: overflow_strategy(), outbound_queue: :queue.queue({String.t(), map()}), outbound_queue_size: non_neg_integer(), relay_url: String.t() | nil, remote_ip: String.t() | nil, subscription_index: GenServer.server() | nil, subscriptions: %{required(String.t()) => subscription()}, track_population?: boolean(), transport_identity: map() | nil, websocket_awaiting_pong_payload: binary() | nil, websocket_keepalive_timeout_timer_ref: reference() | nil, websocket_ping_interval_seconds: non_neg_integer(), websocket_pong_timeout_seconds: pos_integer() }