Current section

Files

Jump to
phoenix lib phoenix router socket.ex
Raw

lib/phoenix/router/socket.ex

# TODO: Remove in 0.7.0
defmodule Phoenix.Router.Socket do
alias Phoenix.Router.Scope
defmacro __using__(options) do
mount = Dict.fetch! options, :mount
quote do
import unquote(__MODULE__)
get unquote(mount), Phoenix.Transports.WebSocket, :upgrade_conn
get unquote(mount <> "/poll"), Phoenix.Transports.LongPoller, :poll
post unquote(mount <> "/poll"), Phoenix.Transports.LongPoller, :open
put unquote(mount <> "/poll"), Phoenix.Transports.LongPoller, :publish
end
end
defmacro channel(channel, module) do
quote do
if Scope.inside_scope?(__MODULE__) do
raise """
You are trying to call `channel` within a `scope` definition.
Please move your channel definitions outside of any scope block.
"""
end
def match(socket, :socket, unquote(channel), "join", message) do
apply(unquote(module), :join, [socket, socket.topic, message])
end
def match(socket, :socket, unquote(channel), "leave", message) do
apply(unquote(module), :leave, [socket, message])
end
def match(socket, :socket, unquote(channel), event, message) do
apply(unquote(module), :event, [socket, event, message])
end
end
end
end