我正在构建一个与 Phoenix 服务器进行实时通信的 Javascript 客户端应用程序,并且想知道是否收到了推送到服务器的消息。看起来 Phoenix 的 socket.js 希望我使用类似的东西:
channel.push("mymessage", {data: 123})
.receive("ok", function(){ console.log("Message pushed successfully"); });
但是,除非我将 Phoenix 应用程序上的返回值更改为 ,否则我无法触发此事件处理程序{:reply, :ok, socket}
,如下所示:
def handle_in("mymessage", %{"data" => data} = payload, socket) do
{:reply, :ok, socket}
# not {:noreply, socket}
end
我想实际上并没有发送消息以响应客户端是有道理{:noreply, socket}
的,但是在什么情况下您希望向服务器发送消息而不让它让您知道它有效?还是我误解了什么?我觉得对于普通的 HTTP 请求,您总是检查来自客户端的请求是否成功。