Changeset View
Changeset View
Standalone View
Standalone View
larus/web/channels/user_socket.ex
defmodule Larus.UserSocket do | defmodule Larus.UserSocket do | ||||
@moduledoc """ | |||||
Larus.UserSocket | |||||
""" | |||||
use Phoenix.Socket | use Phoenix.Socket | ||||
## Channels | # ## Channels | ||||
# channel "rooms:*", Larus.RoomChannel | # channel "rooms:*", Larus.RoomChannel | ||||
## Transports | # ## Transports | ||||
transport :websocket, Phoenix.Transports.WebSocket | transport :websocket, Phoenix.Transports.WebSocket | ||||
# transport :longpoll, Phoenix.Transports.LongPoll | # transport :longpoll, Phoenix.Transports.LongPoll | ||||
# Socket params are passed from the client and can | # Socket params are passed from the client and can | ||||
# be used to verify and authenticate a user. After | # be used to verify and authenticate a user. After | ||||
# verification, you can put default assigns into | # verification, you can put default assigns into | ||||
# the socket that will be set for all channels, ie | # the socket that will be set for all channels, ie | ||||
# | # | ||||
# {:ok, assign(socket, :user_id, verified_user_id)} | # {:ok, assign(socket, :user_id, verified_user_id)} | ||||
# | # | ||||
# To deny connection, return `:error`. | # To deny connection, return `:error`. | ||||
# | # | ||||
# See `Phoenix.Token` documentation for examples in | # See `Phoenix.Token` documentation for examples in | ||||
# performing token verification on connect. | # performing token verification on connect. | ||||
def connect(_params, socket) do | def connect(_params, socket) do | ||||
{:ok, socket} | {:ok, socket} | ||||
end | end | ||||
# Socket id's are topics that allow you to identify all sockets for a given user: | # Socket id's are topics that allow you to identify all sockets for a given | ||||
# user: | |||||
# | # | ||||
# def id(socket), do: "users_socket:#{socket.assigns.user_id}" | # def id(socket), do: "users_socket:#{socket.assigns.user_id}" | ||||
# | # | ||||
# Would allow you to broadcast a "disconnect" event and terminate | # Would allow you to broadcast a "disconnect" event and terminate | ||||
# all active sockets and channels for a given user: | # all active sockets and channels for a given user: | ||||
# | # | ||||
# Larus.Endpoint.broadcast("users_socket:#{user.id}", "disconnect", %{}) | # Larus.Endpoint.broadcast("users_socket:#{user.id}", "disconnect", %{}) | ||||
# | # | ||||
# Returning `nil` makes this socket anonymous. | # Returning `nil` makes this socket anonymous. | ||||
def id(_socket), do: nil | def id(_socket), do: nil | ||||
end | end |