not reseting state on browser disconnect or reconnect
This commit is contained in:
@@ -8,13 +8,13 @@ defmodule BackendWeb.ClusterStatusChannel do
|
||||
@impl true
|
||||
def join("cluster_status", _params, socket) do
|
||||
Logger.info("Client joined clusterstatus channel")
|
||||
:net_kernel.monitor_nodes(true)
|
||||
{: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()})
|
||||
send_node_list(socket)
|
||||
{:noreply, socket}
|
||||
end
|
||||
|
||||
@@ -29,4 +29,28 @@ defmodule BackendWeb.ClusterStatusChannel do
|
||||
def handle_in(_event, _payload, socket) do
|
||||
{:noreply, socket}
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_info({:nodeup, node_name}, socket) do
|
||||
Logger.info("Node up: #{node_name}, broadcasting updated node list")
|
||||
send_node_list(socket)
|
||||
{:noreply, socket}
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_info({:nodedown, node_name}, socket) do
|
||||
Logger.info("Node down: #{node_name}, broadcasting updated node list")
|
||||
send_node_list(socket)
|
||||
{:noreply, socket}
|
||||
end
|
||||
|
||||
defp send_node_list(socket) do
|
||||
game_pid = Backend.GameRunner.get_pid()
|
||||
|
||||
push(socket, "node_list", %{
|
||||
other_nodes: Node.list(),
|
||||
connected_node: node(),
|
||||
game_node: node(game_pid)
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user