В Фениксе
Соответствующий заголовок функции handle_in
должен возвращать ответ в следующем формате: {:reply, {status :: atom, response :: map}, Socket.t}
.
Например:
def handle_in("new_msg", %{"body" => "/who"}, socket) do
user_list = UserList.get # or whatever
{:reply, {:ok, %{kind: "private", from: "server", body: user_list}}, socket}
end
(Если вы установите handle_in
для возврата мусора, например, пустой строки, результирующая ошибка объясняет допустимые форматы возвращаемых значений, откуда я это узнал.)
В Javascript
Когда вы channel.push
, просто поставьте цепочку на .receive
для ответа.
channel.push("new_msg", {body: $chatInput.val()}).receive(
"ok", (reply) => console.log("got reply", reply)
)
(Спасибо Мануэлю Калленбаху за этот ответ.)
person
Nathan Long
schedule
09.05.2016