Current section
Files
Jump to
Current section
Files
lib/writer.ex
defmodule ExWsChannels.Writer do
use GenServer
def start_link(_) do
GenServer.start_link(__MODULE__, nil, [])
end
def init(_), do: {:ok, nil}
# channel is already the sharded name
def handle_cast({:broadcast, channel, message}, state) do
sockets =
try do
:ets.lookup_element(:exws_channels, channel, 3)
rescue
e in ArgumentError -> [] # what a great API ETS exposes ...
end
Enum.each(sockets, fn socket -> ExWs.write(socket, message) end)
{:noreply, state}
end
end