Erlang 将消息投射到全局 gen_server

发布于 2024-11-02 17:21:20 字数 768 浏览 3 评论 0原文

这是上一个问题的继续,

我有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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

A君 2024-11-09 17:21:20

而不是

gen_server:cast(test, message).

write

gen_server:cast({global, test}, message).

如果您将 name 注册为 {global, name} 您必须将其调用为 {global, name}

如果您的处理程序被调用,它将在 shell 中打印“Messagereceiving \r\n”。您通过 io:format 调用做到了这一点。

Instead of

gen_server:cast(test, message).

write

gen_server:cast({global, test}, message).

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文