牛仔:牛仔处理程序如何在没有请求的情况下回复客户端

问题描述:

现在,我使用牛仔作为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如上所述向客户端发送帧。