Java Web服务是否有可能从Apache Tomcat向客户端发送通知?

时间:2011-08-19 22:44:45

标签: java tomcat service axis2

好吧,过去几天我试图将我的国际象棋服务器项目的计划放在桌面上。计划由几个互动的网络服务组成。计划使用Java语言创建Web服务,并使用Axis2 1.6.0 Web服务引擎将其部署到Apache Tomcat 7.0.20上。

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

由于移动验证,历史记录等原因,所有玩家移动必须通过Web服务。当其他玩家需要被告知对手发挥移动时会出现问题。持久的客户请求(发现是对手的移动)对于服务是不可能的,因为当对手发挥他的移动时,玩家转换必须是移民。如何使用java Web服务和eralier提到的技术实现这一目标?是否有可能向网络服务联系人反对玩家并告知他有关对手的举动?有没有其他方法可以用这个技术范围来做到这一点?

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

2 个答案:

答案 0 :(得分:2)

Tomcat到网络浏览器推送通信的一个选项是Comet(有时称为 CometD Bayeaux )。

来自维基文章:

  

Comet 是一种Web应用程序模型,其中长时间持有的HTTP请求允许Web服务器 将数据推送到浏览器,而浏览器不会明确请求它。

(注意:强调我的)

这意味着服务器可以在没有浏览器专门轮询的情况下通知客户端挂起的更改。通过良好的JavaScript框架(例如Dojothis jQuery plugin),您可以通过轮询无缝地使用旧版浏览器。

了解更多关于Comet的一些很好的链接:

希望这有帮助。

答案 1 :(得分:0)

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

无论如何,如果您正在寻找家庭用户,则没有直接的解决方案。要与家庭用户合作,您需要他们打开/ NAT所需的端口到他们的计算机,以便您可以访问他们的PC。普通家庭用户非常复杂。

对于浏览器来说,它更复杂,因为它们是客户端,而不是服务器。也许某些框架可能用于模拟浏览器内的服务器(我认为至少有一个,但我不记得它的名字),但这只会通过重复对服务器的ajax调用直到进行更改。

最后,如果你每秒检查一次服务器,即使对于“快棋”,这也是一个足够低的延迟。