我一直在研究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连接?
答案 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
。