Files
elixir-websocket-testing/backend/lib/backend_web/channels/cluster_status_channel.ex
2026-03-03 14:30:15 -07:00

33 lines
880 B
Elixir

defmodule BackendWeb.ClusterStatusChannel do
@moduledoc """
Channel for cluster status information
"""
use BackendWeb, :channel
require Logger
@impl true
def join("cluster_status", _params, socket) do
Logger.info("Client joined clusterstatus channel")
{:ok, %{status: "connected"}, socket}
end
@impl true
def handle_in("get_nodes", _payload, socket) do
Logger.info("Client requested node list #{inspect(Node.list())}")
push(socket, "node_list", %{other_nodes: Node.list(), connected_node: node()})
{:noreply, socket}
end
@impl true
def handle_in("kill_node", %{"node" => node_to_kill}, socket) do
Logger.warning("Client requested to kill node: #{node_to_kill}")
Backend.Cluster.kill_node(node_to_kill)
{:noreply, socket}
end
@impl true
def handle_in(_event, _payload, socket) do
{:noreply, socket}
end
end