Packages
phoenix_kit
1.7.192
1.7.208
1.7.207
1.7.206
1.7.205
1.7.204
1.7.203
1.7.202
1.7.201
1.7.200
1.7.199
1.7.198
1.7.197
1.7.196
1.7.194
1.7.193
1.7.192
1.7.191
1.7.190
1.7.189
1.7.187
1.7.186
1.7.185
1.7.184
1.7.183
1.7.182
1.7.181
1.7.180
1.7.179
1.7.178
1.7.177
1.7.176
1.7.175
1.7.174
1.7.173
1.7.172
1.7.171
1.7.170
1.7.169
1.7.168
1.7.167
1.7.166
1.7.165
1.7.164
1.7.162
1.7.161
1.7.160
1.7.159
1.7.157
1.7.156
1.7.155
1.7.154
1.7.153
1.7.152
1.7.151
1.7.150
1.7.149
1.7.146
1.7.145
1.7.144
1.7.143
1.7.138
1.7.133
1.7.132
1.7.131
1.7.130
1.7.128
1.7.126
1.7.125
1.7.121
1.7.120
1.7.119
1.7.118
1.7.117
1.7.116
1.7.115
1.7.114
1.7.113
1.7.112
1.7.111
1.7.110
1.7.109
1.7.108
1.7.107
1.7.106
1.7.105
1.7.104
1.7.103
1.7.102
1.7.101
1.7.100
1.7.99
1.7.98
1.7.97
1.7.96
1.7.95
1.7.94
1.7.93
1.7.92
1.7.91
1.7.90
1.7.89
1.7.88
1.7.87
1.7.86
1.7.85
1.7.84
1.7.83
1.7.82
1.7.81
1.7.80
1.7.79
1.7.78
1.7.77
1.7.76
1.7.75
1.7.74
1.7.71
1.7.70
1.7.69
1.7.66
1.7.65
1.7.64
1.7.63
1.7.62
1.7.61
1.7.59
1.7.58
1.7.57
1.7.56
1.7.55
1.7.54
1.7.53
1.7.52
1.7.51
1.7.49
1.7.44
1.7.43
1.7.42
1.7.41
1.7.39
1.7.38
1.7.37
1.7.36
1.7.34
1.7.33
1.7.31
1.7.30
1.7.29
1.7.28
1.7.27
1.7.26
1.7.25
1.7.24
1.7.23
1.7.22
1.7.21
1.7.20
1.7.19
1.7.18
1.7.17
1.7.16
1.7.15
1.7.14
1.7.13
1.7.12
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.20
1.6.19
1.6.18
1.6.17
1.6.16
1.6.15
1.6.14
1.6.13
1.6.12
1.6.11
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.5.2
1.5.1
1.5.0
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.10
1.2.9
1.2.8
1.2.7
1.2.5
1.2.4
1.2.2
1.2.1
1.2.0
1.1.0
1.0.0
A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more
Current section
Files
Jump to
Current section
Files
lib/phoenix_kit/pubsub_helper.ex
defmodule PhoenixKit.PubSubHelper do
@moduledoc """
Helper for dynamically resolving the PubSub server to use.
This module provides functions to get the appropriate PubSub server
based on configuration. It will use the configured pubsub from
the parent application.
## Configuration
Configure the PubSub server in your application:
config :phoenix_kit, pubsub: MyApp.PubSub
If not configured, PhoenixKit will attempt to derive it from the
parent app name (e.g., MyApp -> MyApp.PubSub).
"""
alias PhoenixKit.Config
@doc """
Gets the PubSub server module to use.
Returns the configured pubsub server, or derives it from parent_module config.
"""
def pubsub do
case Config.get(:pubsub, nil) do
nil ->
# Try to derive from parent_module config
case Config.get(:parent_module, nil) do
nil ->
# Last resort fallback - will fail at runtime if not configured
PhoenixKit.PubSub
parent_module ->
Module.concat(parent_module, PubSub)
end
pubsub when is_atom(pubsub) ->
pubsub
end
end
@doc """
Gets the PubSub server from socket endpoint config.
This is useful in LiveView contexts where the socket has access to
the endpoint configuration.
"""
def pubsub_from_socket(socket) do
socket.endpoint.config(:pubsub_server) || pubsub()
end
@doc """
Subscribes to a topic using the configured PubSub server.
"""
def subscribe(topic) do
Phoenix.PubSub.subscribe(pubsub(), topic)
end
@doc """
Subscribes to a topic using a specific PubSub server.
"""
def subscribe(pubsub_server, topic) do
Phoenix.PubSub.subscribe(pubsub_server, topic)
end
@doc """
Broadcasts a message to a topic using the configured PubSub server.
"""
def broadcast(topic, message) do
Phoenix.PubSub.broadcast(pubsub(), topic, message)
end
@doc """
Broadcasts a message using a specific PubSub server.
"""
def broadcast(pubsub_server, topic, message) do
Phoenix.PubSub.broadcast(pubsub_server, topic, message)
end
end