WebsockexNova.Defaults.DefaultSubscriptionHandler (WebsockexNova v0.1.0)

View Source

Default 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

channel()

@type channel() :: String.t()

A channel or topic to subscribe to

params()

@type params() :: map()

Parameters for the subscription

state()

@type state() :: WebsockexNova.ClientConn.t() | map()

State - either a ClientConn struct or any map with subscription-related fields

subscription_id()

@type subscription_id() :: String.t()

A unique identifier for a subscription

subscription_response()

@type subscription_response() :: map()

Response from a subscription request

Functions

cleanup_expired_subscriptions(state)

@spec cleanup_expired_subscriptions(state()) :: state()

Clean up expired subscriptions.

find_subscriptions_by_status(status, state)

@spec find_subscriptions_by_status(atom(), state()) :: %{
  required(subscription_id()) => term()
}

Find all subscriptions with a specific status.

subscription_init(opts \\ %{})

@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