【问题标题】:Cowboy: How can a cowboy handler reply back to client without request牛仔:牛仔处理程序如何在没有请求的情况下回复客户
【发布时间】:2017-11-29 16:54:15
【问题描述】:

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

我期待处理程序中的某些内容类似于 send(Client, Data)。我在思考正确的方向吗? ?谢谢! 如果是,cowboy 是否提供了一些 API 来做到这一点?

【问题讨论】:

    标签: erlang cowboy


    【解决方案1】:

    引用文档:

    每当 Erlang 消息到达时,Cowboy 都会调用 websocket_info/2。

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

    下面的sn -p 将日志消息转发给客户端并忽略 所有其他人:

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

    所以你所要做的就是从另一个进程(或者如果你愿意的话,从它自己)向你的处理程序发送一条消息,然后像上面那样实现 websocket_info 来向客户端发送一个帧。

    【讨论】:

      猜你喜欢
      • 2017-06-14
      • 2017-06-22
      • 2013-12-19
      • 2013-05-30
      • 1970-01-01
      • 2018-04-02
      • 2015-04-18
      • 2020-09-28
      • 1970-01-01
      相关资源
      最近更新 更多