我需要从凤凰频道调用控制器内部的一个函数。这是我的凤凰频道
//dashboardChannel.ex
def join("dashboard:lobby", payload, socket) do
IO.puts "Entered Room"
if authorized?(payload) do
{:ok, socket}
else
{:error, %{reason: "unauthorized"}}
end
end
这是我的 handle_in 函数
//dashboardChannel.ex
def handle_in("new_msg", %{"uid" => uid, "body" => body}, socket) do
broadcast_from! socket, "new_msg", %{uid: uid, body: body}
MyApp.Endpoint.broadcast_from! self(), "dashboard:lobby", "new_msg", %{uid: uid, body: body}
{:noreply, socket}
end
以下是我的控制器功能,此控制器的路由将是“/users”
//dashboardController.ex
def index(conn, _params) do
IO.puts "Enters Users Controller"
MyApp.Endpoint.broadcast_from! self(), "dashboard:lobby", "new_msg", %{"uid" => "ac4452s", "body" => "Sample User"}
IO.puts "Must have executed User Controller"
users = Accounts.list_users() // It will list all my users
render(conn, "index.json", users: users)
end
我是凤凰和长生不老药的新手。我需要从上面的 phoenix 通道中调用“/users”控制器函数。我怎么称呼它。有什么方法可以从 phoenix 通道调用控制器函数,还可以从控制器方法调用“new_msg”的 handle_in 函数。提前致谢
以下是我的要求
- 我需要 从主题“dashboard:lobby”中的dashboardChannel的new_msg的handle_in函数调用dashboardController的函数,这是我的“索引”(路由“/users” )
- 而且我还需要从dashboardController的索引中调用主题“dashboard:lobby”中dashboardChannel的new_msg的handle_in函数