Erlang 将消息投射到全局 gen_server
这是上一个问题的继续,
我有gen_server:
start(UserName) ->
case gen_server:start({global, UserName}, player, [], []) of
{ok, _} ->
io:format("Player: " ++ UserName ++ " started");
{error, Error} ->
Error
end
...
如何正确地将消息发送到此gen_server。例如:在我制作的另一个文件中:
gen_server:cast(test, message).
在我的 gen_server 文件中,我有:
handle_cast(message, State) ->
io:format("Message receiving \r\n"),
{noreply, State};
我用测试名称启动我的 gen_server:
服务器:启动(测试)。 测试开始
。 shell 中没有任何输出。我如何检查handle_cast调用与否?
谢谢。
it's continue of previos question
I have gen_server:
start(UserName) ->
case gen_server:start({global, UserName}, player, [], []) of
{ok, _} ->
io:format("Player: " ++ UserName ++ " started");
{error, Error} ->
Error
end
...
How correctly send message to this gen_server. For example: in another file i make:
gen_server:cast(test, message).
In my gen_server file i have:
handle_cast(message, State) ->
io:format("Message receiving \r\n"),
{noreply, State};
I start my gen_server with test name:
server:start(test).
test started
when i call gen_server:cast(test, message).
it is nothing output in shell. How can i check handle_cast calling or not?
Thank you.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
而不是
write
如果您将 name 注册为 {global, name} 您必须将其调用为 {global, name}
如果您的处理程序被调用,它将在 shell 中打印“Messagereceiving \r\n”。您通过 io:format 调用做到了这一点。
Instead of
write
If you register name as {global, name} you must call it as {global, name}
If your handler is called it will print "Message receiving \r\n" in shell. You made that with io:format call.