我正在尝试创建一个仅包含用户可以订阅的时钟的 Phoenix 频道。
defmodule MyWeb.TimeChannel do
use Phoenix.Channel
def join("room:time", _message, socket) do
schedule_heartbeat()
{:ok, socket}
end
def handle_info(_, socket) do
broadcast!(socket, "update", %{time: DateTime.utc_now()})
schedule_heartbeat()
{:noreply, socket}
end
@heartbeat_ms 1000
defp schedule_heartbeat, do: Process.send_after(self(), :heartbeat, @heartbeat_ms)
end
我遇到的问题是,当多个客户端加入时,我最终会每秒安排多个滴答声。
我怎样才能只安排一个滴答作响的时钟?