33 lines
821 B
Elixir
33 lines
821 B
Elixir
|
defmodule <%= module %>Channel do
|
||
|
use <%= web_module %>, :channel
|
||
|
|
||
|
@impl true
|
||
|
def join("<%= singular %>:lobby", payload, socket) do
|
||
|
if authorized?(payload) do
|
||
|
{:ok, socket}
|
||
|
else
|
||
|
{:error, %{reason: "unauthorized"}}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Channels can be used in a request/response fashion
|
||
|
# by sending replies to requests from the client
|
||
|
@impl true
|
||
|
def handle_in("ping", payload, socket) do
|
||
|
{:reply, {:ok, payload}, socket}
|
||
|
end
|
||
|
|
||
|
# It is also common to receive messages from the client and
|
||
|
# broadcast to everyone in the current topic (<%= singular %>:lobby).
|
||
|
@impl true
|
||
|
def handle_in("shout", payload, socket) do
|
||
|
broadcast(socket, "shout", payload)
|
||
|
{:noreply, socket}
|
||
|
end
|
||
|
|
||
|
# Add authorization logic here as required.
|
||
|
defp authorized?(_payload) do
|
||
|
true
|
||
|
end
|
||
|
end
|