Java web服务是否可以从Apache Tomcat向客户端发送通知?

Java web服务是否可以从Apache Tomcat向客户端发送通知?,java,tomcat,service,axis2,Java,Tomcat,Service,Axis2,好吧,过去几天我正试图把我的国际象棋服务器项目的计划摆上桌面。它计划由几个相互交互的web服务组成。Web服务计划使用Java语言制作,并使用Axis2 1.6.0 Web服务引擎部署到Apache Tomcat 7.0.20上 到目前为止,将有身份验证web服务、播放器池web服务、验证web服务和“业务逻辑”web服务,这将是客户端应用程序已知的唯一web服务。所有客户端请求都将通过此服务完成并分别转发 由于移动验证、历史记录等原因,所有玩家的移动都必须通过web服务。当其他玩家需要被告知对

好吧,过去几天我正试图把我的国际象棋服务器项目的计划摆上桌面。它计划由几个相互交互的web服务组成。Web服务计划使用Java语言制作,并使用Axis2 1.6.0 Web服务引擎部署到Apache Tomcat 7.0.20上

到目前为止,将有身份验证web服务、播放器池web服务、验证web服务和“业务逻辑”web服务,这将是客户端应用程序已知的唯一web服务。所有客户端请求都将通过此服务完成并分别转发

由于移动验证、历史记录等原因,所有玩家的移动都必须通过web服务。当其他玩家需要被告知对手的移动时,问题就会出现。不存在对发球的持续客户端请求(以发现对手是否进行了移动),因为当对手进行移动时,必须立即更改玩家的回合。如何使用JavaWeb服务和上述技术实现这一点?是否有可能通过网络服务联系对方球员,并告知他对手的行动?在这种技术范围内,还有其他方法可以做到这一点吗


编辑:客户端应用程序计划为桌面应用程序,可能是Java或C#。

您没有说明您的客户端技术(浏览器?桌面应用程序?)

不管怎样,如果您是针对家庭用户,没有直接的解决方案。要与家庭用户一起工作,您需要他们打开/NAT所需的计算机端口,以便您可以访问他们的PC。这对于普通家庭用户来说非常复杂

对于浏览器来说,它甚至更复杂,因为它们是客户端,而不是服务器。也许可以使用一些框架来模拟浏览器中的服务器(我想至少有一个,但我记不起它的名称),但这就像是重复对服务器的ajax调用,直到做出更改


最后,如果您每秒检查一次服务器,那么即使对于“快速国际象棋”来说,延迟也足够低

Tomcat到web浏览器推送通信的一个选项是(有时称为Comed或Bayeaux)

从维基文章:

Comet是一种web应用程序模型,在该模型中,长期持有的HTTP请求允许web服务器将数据推送到浏览器,而不需要浏览器明确请求数据。

(注:强调地雷)

这意味着服务器可以通知客户端挂起的更改,而无需浏览器专门轮询。有了一个好的JavaScript框架(比如or),您可以通过轮询无缝地与旧浏览器协作

了解Comet更多信息的一些好链接:


希望这会有所帮助。

每隔一秒定期检查服务器可能会导致副作用,这可能会对游戏性造成致命影响。例如,如果服务负载过重,响应可能会过度延迟,播放器时钟也会过度不同步。是的,这是一个需要微调的问题。但从broswer来说,这是您所能做的一切(即使Comet依赖于浏览器发出连续的请求,即使通过某些机制缓解了请求)。而作为服务器的完整桌面应用程序会引发配置问题(NAT/防火墙),并且(可能)是客户客户端中的一个额外安全漏洞。感谢您的回复,我将对此进行检查