Current section
Files
Jump to
Current section
Files
lib/push_ex/push/item_server.ex
defmodule PushEx.Push.ItemServer do
@moduledoc false
require Logger
def start_link(
%{
item: item = %PushEx.Push{channel: channel, event: event},
at: unix_inserted_at
},
opts \\ []
) do
Task.start_link(fn ->
channel_api_mod = Keyword.get(opts, :channel_api_mod, PushExWeb.PushChannel)
ms_since_insertion = PushEx.unix_ms_now() - unix_inserted_at
channel_api_mod.broadcast({:msg, channel}, item)
|> case do
{:ok, :broadcast} ->
Logger.debug("Push.ItemServer broadcast channel=#{channel} event=#{event} ms_in_stage=#{ms_since_insertion}")
{:ok, :no_listeners} ->
Logger.debug("Push.ItemServer no_listeners channel=#{channel} event=#{event} ms_in_stage=#{ms_since_insertion}")
end
end)
end
end