如何将 erlang 消息发送到 websocket 处理程序?
How to send an erlang message to a websocket handler?
我一直在研究 Erlang 中的 Cowboy websockets。
我的目标是将 websocket 帧发送到现有的 websocket 连接。
我在 Receiving Erlang messages 下找到文档说我可以发送一个 "Erlang message" 并且它将由 websocket_info/2
.
处理
本文档中 "Sending an Erlang message" 是什么意思?
我试过类似的方法:
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 连接?
几分钟后,我发现我发送 self() ! "Msg"
太早了。
Cowboy websockets 也有一个函数 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
。
我一直在研究 Erlang 中的 Cowboy websockets。
我的目标是将 websocket 帧发送到现有的 websocket 连接。
我在 Receiving Erlang messages 下找到文档说我可以发送一个 "Erlang message" 并且它将由 websocket_info/2
.
本文档中 "Sending an Erlang message" 是什么意思?
我试过类似的方法:
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 连接?
几分钟后,我发现我发送 self() ! "Msg"
太早了。
Cowboy websockets 也有一个函数 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
。