WebsockexNova.Defaults.DefaultSubscriptionHandler (WebsockexNova v0.1.1)
View SourceDefault implementation of the SubscriptionHandler behavior.
This module provides sensible default implementations for all SubscriptionHandler callbacks, enabling applications to subscribe to data streams via WebSocket.
Features
- Subscription management with unique IDs
- Automatic subscription status tracking
- Automatic timeout detection for pending subscriptions
- Methods to find and filter active subscriptions
Usage
You can use this module directly or as a starting point for your own implementation:
defmodule MyApp.CustomSubscriptionHandler do
use WebsockexNova.Defaults.DefaultSubscriptionHandler
# Override specific callbacks as needed
def subscribe(channel, params, conn) do
# Custom subscription logic
# ...
end
end
Summary
Types
A channel or topic to subscribe to
Parameters for the subscription
State - either a ClientConn struct or any map with subscription-related fields
A unique identifier for a subscription
Response from a subscription request
Functions
Clean up expired subscriptions.
Find all subscriptions with a specific status.
Initializes a subscription handler.
Types
@type channel() :: String.t()
A channel or topic to subscribe to
@type params() :: map()
Parameters for the subscription
@type state() :: WebsockexNova.ClientConn.t() | map()
State - either a ClientConn struct or any map with subscription-related fields
@type subscription_id() :: String.t()
A unique identifier for a subscription
@type subscription_response() :: map()
Response from a subscription request
Functions
Clean up expired subscriptions.
@spec find_subscriptions_by_status(atom(), state()) :: %{ required(subscription_id()) => term() }
Find all subscriptions with a specific status.
@spec subscription_init(map() | Keyword.t()) :: {:ok, WebsockexNova.ClientConn.t()}
Initializes a subscription handler.
Parameters
opts
- Options for initializing the subscription handler (optional)
Returns
{:ok, conn}
- Initial state with subscription handler settings