oxb*_*kes 10 scala remote-actors actor
我有一个服务器,它使用远程actor框架与多个客户端进行通信.正如这个问题所提到的,我无法跟踪客户何时消失.因此,我的服务器仍在尝试向不存在的客户端发送消息.
好吧,我会在这里冒险。
免责声明:不管您将在下面阅读什么,您可能想从这里开始。
我对 scala 不熟悉,但它使用与 Erlang 类似的原理,我在那里感觉有点舒服。然而,让我对你的问题感到困惑的事情与此无关。但更多的是您似乎正在建立的客户端-服务器关系。
根据定义,服务器不会继续向客户端发送消息,除非它收到请求。也就是说,服务器参与者类应该围绕检查接收到的消息并采取相应行动的 case 语句构建(不一定总是)。因此,在这种情况下,客户端是存在的,服务器不应该担心它,而是正常发送其回复消息,因为客户端只是通过请求来了解其存在。
因此,如果您的服务器仍在尝试向客户端发送消息,尽管这些客户端已关闭,但在我看来,尽管没有收到任何请求,但它仍在尝试发送消息。在客户端-服务器关系的上下文中,这是根本错误的。服务器应该只对请求做出反应。否则它就会扮演客户的角色。
无论如何,您可以(并且应该)定义任何客户端-服务器对话的结束。这将有助于释放资源并结束已建立的连接。为了达到这个效果:
您的客户端 Actor 应该向服务器发送一条停止消息,并使用 scala 为 Actor 类实现的任何退出函数终止其执行。
收到停止消息后,服务器参与者不应回复客户端。相反,它应该像客户端参与者一样进行清理(如果有)并终止执行。
通过这种方式,您可以确保正确终止所有涉及的参与者并正确释放资源。
我希望这能有所帮助。不幸的是我对scala本身并不熟悉。否则我可以引入一些代码。但希望上面的链接应该有所帮助。
| 归档时间: |
|
| 查看次数: |
624 次 |
| 最近记录: |