Я пытаюсь создать канал Феникса, который содержит только часы, на которые пользователи могут подписаться.
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
Проблема, с которой я сталкиваюсь, заключается в том, что при подключении более одного клиента я планирую несколько тиков в секунду.
Как мне запланировать одно тиканье?