牛仔:牛仔处理程序如何在没有请求的情况下回复客户端
问题描述:
现在,我使用牛仔作为websocket服务器,我知道处理程序实现了一种称为cowboy_websocket_handler
的行为,并且每次我们收到一个websocket_handle/3
函数请求和回复请求,我们回复使用{reply, X, _}
。然而,由于WebSocket是一个双向协议,并且该服务器可以在没有请求的情况下到达客户端,我如何向客户端发送一些数据,而不是web_socket_handle
。牛仔:牛仔处理程序如何在没有请求的情况下回复客户端
我期待着沿着 send(Client, Data)
的处理程序的东西。我正在朝着正确的方向思考? ?谢谢! 如果是,牛仔是否提供了一些API来做到这一点?
答
引述文档:
牛仔将每当一个Erlang消息到达调用websocket_info/2。
处理程序可以处理或忽略消息。它也可以发送帧 给客户端或停止连接。
下面的代码片段转发消息记录到客户端,而忽略 所有其他人:
websocket_info({log, Text}, State) ->
{reply, {text, Text}, State};
websocket_info(_Info, State) ->
{ok, State}.
因此,所有你需要做的就是从另一个进程发送消息给你的处理程序(或从本身,如果你希望),并执行websocket_info如上所述向客户端发送帧。