牛仔:牛仔经理如何在没有请求的情况下回复客户

时间:2017-06-26 18:49:04

标签: erlang cowboy

现在我使用牛仔作为websocket服务器,我理解处理程序实现了一个名为cowboy_websocket_handler的行为,并且每次收到请求时都会调用websocket_handle/3函数并回复回到请求,我们使用{reply, X, _}回复。但是,由于WebSocket是双向协议,并且服务器可以在没有请求的情况下访问客户端,因此如何将一些数据发送到客户端,而不是web_socket_handle

我期待处理程序中的某些内容 send(Client, Data)。我在想正确的方向吗? ?谢谢! 如果是的话,牛仔会提供一些API吗?

1 个答案:

答案 0 :(得分:1)

引用文档:

  只要Erlang消息到达,牛仔就会调用websocket_info / 2。

     

处理程序可以处理或忽略消息。它也可以发送帧   到客户端或停止连接。

     

以下代码段将日志消息转发给客户端并忽略   所有其他人:

websocket_info({log, Text}, State) ->
    {reply, {text, Text}, State};
websocket_info(_Info, State) ->
    {ok, State}.

所以你要做的就是从另一个进程向你的处理程序发送一条消息(如果你愿意的话,从你自己发送消息),并按照上面的方法实现websocket_info,向客户端发送一个框架。