Есть ли способ вызвать метод контроллера из канала Phoenix туда и сюда - PullRequest
0 голосов
/ 05 июня 2018

Мне нужно вызвать функцию внутри контроллера из канала Феникс.Это мой канал Феникса

    //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

Я новичок в фениксе и эликсире.Мне нужно вызвать функцию контроллера "/ users" из канала Феникс выше.Как мне позвонить, позвони так.Есть ли способ вызвать функцию контроллера из канала Phoenix, а также вызвать функцию handle_in, которая является "new_msg" из метода контроллера.Заранее спасибо

Ниже мое требование

  1. Мне нужно вызвать функцию dashboardController's, которая является моим "index" (route "/ users") из функции handle_in dashboardChannel new_msg в теме " dashboard :obby "
  2. А также мне нужно вызвать функцию handle_in из dashboardChannel's new_msg в теме "панель мониторинга: лобби" с панели управленияКонтроллер индекс
...