问题描述
|
场景:用户登录到客户端软件,该软件与服务器端实体(服务器)形成持久的双向连接,服务器端实体将处理用户指定的任务。当服务器端实体在处理用户的任务时遇到错误或需要进一步的用户输入时,它将通知客户端软件,并等待客户端决定要做什么。客户端软件将采用新的用户指定的输入,并将其发送到服务器端。服务器端使用新的用户指定输入继续上次停止的位置。此反馈周期将一直持续到完成处理为止。逐步更新的用户输入将全部存储在服务器端,并且可以从客户端软件进行访问和修改。因此,如果客户端删除特定的输入,则该更改将立即反映在服务器端。在服务器端,可能需要一个额外的接口才能将不同用户的客户端路由到可用的硬件节点(云),以支持在服务器端运行的并发多用户任务。
在客户端,我怀疑使用套接字连接到服务器...
现在,对于服务器,我有点迷茫,因为似乎有许多不同的Java服务器,例如Jetty&Netty。我也在谨慎行事,以免在这里尝试重新发明任何轮子。
构建服务器是否正确?或构建可按需完成特定任务的Web服务?
我不仅在寻找一种适合所有解决方案的解决方案(可能是一厢情愿的想法),而且还对我目前的情况有任何见解。
解决方法
Netty将提供您所需的许多功能,而无需您重新发明套接字服务器。也就是说,我可以确定您确实需要客户端和服务器之间的双向实时通信。如果您可以解决该问题,从而使客户端与服务器之间的通信不需要是实时的,那么诸如RESTful Web服务之类的事情就有可能实现,并且(以我的经验)不那么复杂且容易出错。