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
 |