【发布时间】:2019-05-03 11:15:31
【问题描述】:
在我的项目中,我想让多个客户端连接到一个服务。我正在使用 java Rsocket 实现。
服务应该为每个客户端维护一个状态。现在,我可以通过一些标识符来管理客户端。这个选项我已经实现了。但我不想使用字符串手动管理会话。
所以另一个想法是通过 Rsocket 连接来识别客户端。有没有办法使用 Rsocket 通道来识别特定的客户端?
想象一个示例服务和几个客户端。每个客户端都有 Rsocket 通道,服务启动并运行。有没有办法使用 Rsocket 通道在服务器端识别这些客户端?如果您可以展示这种行为的编程示例,那将是惊人的。 谢谢!
编辑(更详细地描述案例)
这是我的例子。
我们目前使用了三个 CORBA 对象,如图所示:
- LoginObject(通过 NamingService 检索到的引用)。客户端可以调用 login() 方法获取会话
- Session 对象有多种方法可以查询有关当前服务上下文的详细信息,最重要的是获取 Transaction 对象
- Transaction 对象可用于通过将 commandName 和键值对列表作为参数的通用方法执行各种命令。 客户端执行 n 个命令后,他可以提交或回滚事务(也可以通过 Transaction 对象上的方法)。
所以这里我们使用会话对象在我们的服务上执行事务。
现在我们决定从 CORBA 迁移到 Rsocket。因此,我们需要 Rsocket 微服务能够存储会话的状态,否则我们无法知道将要提交或回滚什么。这可以通过每个客户的单个发布者来完成吗?
【问题讨论】:
-
不清楚您要做什么,大多数情况下不建议在 Web 服务器中保存状态 + 如果您正在使用通道,您可以为每个客户端创建
Publisher,那么为什么要这样做你需要状态吗? -
@matanper 我用更详尽的描述编辑了这个问题:)
-
我推荐你看看akka.io 这是一个非常强大的响应式框架。
标签: java reactive-programming rsocket