Files
2026-03-03 14:30:15 -07:00

28 lines
758 B
Elixir

defmodule BackendWeb.UserSocket do
use Phoenix.Socket
require Logger
## Channels
channel("user:*", BackendWeb.ConnectedUserChannel)
channel("cluster_status", BackendWeb.ClusterStatusChannel)
@impl true
def connect(%{"user_name" => user_name}, socket, _connect_info) do
{:ok, assign(socket, :user_name, user_name)}
end
def connect(_params, _socket, _connect_info) do
Logger.warning("WebSocket connection rejected: user_name required")
{:error, %{reason: "user_name required"}}
end
@impl true
def id(%{assigns: %{user_name: user_name}}) do
# assign websocket to user name
# allows other parts of app to manipulate all sockets for a given user
"user_socket:#{user_name}"
end
def id(_socket), do: nil
end