问题标签 [gen-server]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
erlang - 为什么我们需要 simple_one_for_one?
有人告诉我 simple_one_for_one 对于聊天应用程序非常有用,因为每个聊天客户端都是一个服务器进程(gen_server)。这是正确的吗?
我想知道为什么我们需要它?为什么不只创建一个中心服务器(gen_server)来处理所有聊天客户端通信?因为可能聊天客户端的数量非常多,所以只有一台服务器无法快速处理,导致系统变慢?
我认为可能创建太多像 simple_one_for_one 这样的服务器可能会占用太多系统资源。我是一个新的 OTP 人,所以我真的需要解释这一点。
erlang - 如何调用唯一注册的 gen_server 进程?
我是 Erlang 的新手,我正在尝试构建一个简单的游戏服务器(学习目的)。
我有一个创建多个客户端处理程序(gen_server)的客户端控制器(主管)。我还有一个创建多个游戏处理程序(gen_server)的游戏控制器(主管)。
然后,一个游戏处理程序(游戏桌)将与多个客户端处理程序(玩家)进行通信。我创建这样的客户端处理程序:
client_handler.erl:
game_handler.erl:
我的问题是我想在 client_handler 和 game_handler 之间进行交谈,而他们都不知道它们的内部结构。现在我使用:
client_handler.erl:
这很好用。但是,我想使用:
client_handler.erl:
所以我可以为每个模块构建单独的 API:s(仅使用 -export 函数)。这可能吗?
最好的问候, xqtr
编辑:错字
erlang - 在动态生成的 gen_server 上执行同步操作
我很难理解正确的方法来调用由具有simple_one_for_one
子策略的主管动态创建的 gen_server 实例。我正在尝试将数据访问控制创建为 gen_servers。每个实体都有自己的主管,并且该主管将根据需要创建 gen_server 实例,以便在数据库上实际执行 CRUD 操作。我了解定义子进程的过程,以及根据需要创建它们的过程。
最初,我的计划是将子创建过程抽象为 gen_server 模块中的自定义函数,该函数创建了一个子,使用 触发对该子的请求的操作(例如,查找、存储、删除)gen_server:call()
,然后将操作结果返回给调用过程。但是,除非我弄错了,否则这将阻止任何其他尝试使用这些函数的进程,直到调用返回。这绝对不是我的想法。
我可能会陷入 OO 模式(我的背景是 Java),但似乎应该有一种干净的方法允许一个模块中的函数获取对子进程的引用,然后对该进程进行调用而不会泄漏内部那个孩子。换句话说,我不想create_child()
在实体主管上调用该方法,然后让我的应用程序代码针对该子 PID(即gen_sever:call(Pid, {find_by_id, Id})
)进行 gen_server:calls。相反,我希望能够调用一个更像Child:find_by_id(Id)
.
erlang - gen_server:call 因异常退出而失败
我Erlang R16B03-1 (erts-5.10.4)
在 OS X 10.9.2 上运行。Erlang 是使用 brew 安装的。
我正在尝试运行 gen_server 模块。
在我正在运行的 erlang shell 中:
我无法摆脱那个例外。通过查找异常消息,我实际上并没有找到任何有用的资源,但这并没有太大帮助。
干杯。
elixir - 消息捕获句柄* 回调 Elixir
我创建了一个小型 genserver 应用程序,引用 Elixir 的 Etudes 并且运行良好,当我启动服务器并执行 GenServer.call..我得到所需的数据。
同时,我的应用程序也在接收来自其他生产者的消息,这些消息必须被捕获,因为现在只要我的应用程序收到如下任何消息,它就可以在 shell 上看到。
如何在我的应用回调函数中获取此消息以进一步发送到数据库。据我所知,我会在我的 handle_info 中收到这条消息,因为消息不是使用 GenServer.call 调用的。但不确定如何。
erlang-otp - 在线用户存储 Elixir
我正在使用 OTP Genserver 在 Elixir 中开发一个聊天室 [all to all] 应用程序,并在用户注册其姓名作为第一阶段时从 js 客户端获取消息。现在,只是有点不确定以某种方式将这些名称存储在我的 elixir 服务器上并通过在线用户列表或数据库存储向客户端发送定期更新的最佳方法是什么。请建议最好的方法。
elixir - “handle_call”超时
我正在从 GenServer 中的句柄信息功能调用 elixir genserver 以添加电话号码获取表单客户端。但是一旦调用了handle_call,所有者进程就会崩溃[超时]。请帮忙。
全局创建一个 ETS 以在调用任何下述函数之前插入值。
错误:
websocket - 运行 Cowboy start_listener() 时出现异常
我已经关注了http://maplekeycompany.blogspot.in/2012/03/very-basic-cowboy-setup.html链接,但是当我运行这个项目时,它显示我的崩溃报告告诉我牛仔 start_listener() 是未定义的。
这个错误意味着什么以及如何解决它?
erlang - Elixir GenServer 教程中的时间错误?
我正在阅读 Elixir “入门”教程,其中使用了以下代码片段:
现在,create/2
使用cast
操作而lookup
使用call
。这意味着执行异步调用,然后立即执行假定异步操作成功执行的同步调用。当代码本身正确时,计时问题是否会导致测试失败,或者是否存在我遗漏的某些cast
方面call
?
erlang - Erlang gen_server communication
If I have several instances of server, how can I pass info from one to another, for example:
I have this:
Let say that I have two servers, one and two. How can I access from the server one info from the state of server two?