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

Erlang 牛仔:牛仔处理者如何在没有请求的情况下回复客户,erlang,cowboy,Erlang,Cowboy,现在我使用cowboy作为websocket服务器,我了解到处理程序实现了一个名为cowboy\u websocket\u处理程序的行为,每次我们收到请求时都会调用websocket\u handle/3函数,为了回复请求,我们使用{reply,X,}进行回复。但是,由于WebSocket是一种双向协议,并且服务器无需请求即可访问客户端,因此如何向客户端发送一些数据,而不是在web\u socket\u handle中 我期待着处理程序中的一些东西 发送(客户端、数据)。我想的方向对吗?谢谢 如

现在我使用cowboy作为websocket服务器,我了解到处理程序实现了一个名为
cowboy\u websocket\u处理程序
的行为,每次我们收到请求时都会调用
websocket\u handle/3
函数,为了回复请求,我们使用
{reply,X,}
进行回复。但是,由于WebSocket是一种双向协议,并且服务器无需请求即可访问客户端,因此如何向客户端发送一些数据,而不是在
web\u socket\u handle

我期待着处理程序中的一些东西
发送(客户端、数据)
。我想的方向对吗?谢谢 如果是,牛仔是否提供了一些API来实现这一点

引用文档:

每当Erlang消息到达时,Cowboy将调用websocket_info/2

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

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

因此,您所要做的就是从另一个进程(如果愿意,也可以从它自己)向处理程序发送消息,并实现上述websocket_信息以向客户端发送帧

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