Current section

Files

Jump to
phoenix lib phoenix router socket.ex
Raw

lib/phoenix/router/socket.ex

defmodule Phoenix.Router.Socket do
defmacro __using__(options) do
mount = Dict.fetch! options, :mount
quote do
import unquote(__MODULE__)
dispatch_option unquote(mount), Phoenix.Socket.Handler, router: __MODULE__
end
end
defmacro channel(channel, module) do
quote do
def match(socket, :websocket, unquote(channel), "join", message) do
apply(unquote(module), :join, [socket, socket.topic, message])
end
def match(socket, :websocket, unquote(channel), "leave", message) do
apply(unquote(module), :leave, [socket, message])
end
def match(socket, :websocket, unquote(channel), event, message) do
apply(unquote(module), :event, [socket, event, message])
end
end
end
end