如何发送erlang消息到websocket处理程序?

时间:2018-10-01 13:34:20

标签: websocket erlang cowboy

我一直在研究Erlang中的Cowboy网络套接字。

我的目标是将websocket框架发送到现有的websocket连接。 我在Receiving Erlang messages下找到文档,指出我可以发送“ Erlang消息”,并将由websocket_info/2处理。

此文档“发送Erlang消息”是什么意思?

我尝试过类似的事情:

init(Req, State) ->
  Self = self(),
  spawn(fun() ->
    timer:sleep(2000),
    Self ! "Hoii"
  end),
  {cowboy_websocket, Req, State}.

websocket_info(_Info, State) ->
  io:fwrite("Info received\n"),
  {ok, State}.

但这似乎无济于事。

如何为我的websocket_info/2发送Erlang消息以处理现有的websocket连接?

1 个答案:

答案 0 :(得分:2)

几分钟后,我发现我只是太早发送了self() ! "Msg"

牛仔web套接字还具有一个功能websocket_init/1,通过将代码移入该功能,我可以接收到websocket_info/2消息。

websocket_init(State) ->
  Self = self(),
  spawn(fun() ->
    timer:sleep(2000),
    Self ! "Hoii"
  end),
  {ok, State}.

websocket_info(_Info, State) ->
  io:fwrite("Info received\n"),
  {ok, State}.

请注意,现在正在从websocket_init/1函数发送消息,而不仅仅是init/2