将服务器上的更改通知多个java小程序/应用程序的最佳方式

将服务器上的更改通知多个java小程序/应用程序的最佳方式,java,google-app-engine,sockets,servlets,applet,Java,Google App Engine,Sockets,Servlets,Applet,我需要知道让服务器(最好是基于php的服务器,但也可以使用google app engine设置jsp/servlet服务器)通知几个java小程序/应用程序数据发生更改的最佳(最快)方法 我想象这一切的方式与我认为在线java游戏(如Runescape)的工作方式非常相似 用户1:更改服务器上的数据。 服务器:将成功返回给用户1,通知连接的计算机更改。 连接的计算机1:处理更改,将成功返回到服务器。 连接的计算机2:处理更改,将成功返回到服务器。 连接的计算机3:处理更改,将成功返回到服务器。

我需要知道让服务器(最好是基于php的服务器,但也可以使用google app engine设置jsp/servlet服务器)通知几个java小程序/应用程序数据发生更改的最佳(最快)方法

我想象这一切的方式与我认为在线java游戏(如Runescape)的工作方式非常相似
用户1:更改服务器上的数据。
服务器:将成功返回给用户1,通知连接的计算机更改。
连接的计算机1:处理更改,将成功返回到服务器。
连接的计算机2:处理更改,将成功返回到服务器。
连接的计算机3:处理更改,将成功返回到服务器。
连接的计算机4:处理更改,将成功返回到服务器


我希望整个过程能在半秒钟内完成,而不涉及投票,因为会有很长时间的空谈,然后突然发生4起事件

如果它必须非常快速和可靠,我根本不会使用web服务器。我会有一个独立的服务器进程,并让客户端直接通过TCP连接到它。更多的应用程序使用来自web服务器的推送,但我仍然觉得它非常不可靠。每个客户端都需要一个线程来阻止套接字读取。当数据到达客户端系统时,他们将立即获得数据。

查看ICEPush的Java实现。我找到了两篇文章,演示了如何在PHP中实现类似的功能。这两篇文章都展示了一个AJAX客户端,但是您可以在java小程序中将其反向工程为简单的HTTP请求。基本上,这些引擎所做的一切都是让客户端与服务器维护一个挂起的HTTP请求,当服务器拥有客户端的信息时返回该请求。基本上,客户机向服务器发出请求,如果服务器的队列中没有该客户机的事件,它将保留该请求并休眠,直到有通知添加到队列中,或者服务器返回请求时达到超时,客户机将解析该请求,然后立即发出另一个请求到服务器,该过程将重新开始。ICEPush示例的超时时间略低于60秒



这是浏览器客户端吗?看看这是否有助于@pangea是的,而且它是数字签名的,以.jar的形式运行,因此它与标准java应用程序具有相同的权限。这个链接看起来非常有用,我会确定的。经过一点研究,我不得不同意,没有什么能与套接字连接相比。谢谢JOTN:)我同意如果你能灵活地走这条路,你会遇到最少的问题。默认情况下,大多数java web服务器将http服务器限制为5个线程,这是可以更改的,但正如JOTN指出的那样,对于每个客户端,都会有一个阻塞线程,但是对于每个套接字,也会有阻塞线程进行读取,因此这是一种权衡。