Web服务器是否可以在没有请求的情

时间:2012-12-04 10:05:04

标签: java json swing request

我在每个PC上都有几台PC我设置了一个小型swing应用程序,它将带有JSON请求的数据传送到一个Web服务器。我是否可以从Web服务器接收数据而无需向Web服务器发送请求,换句话说,Web服务器可以在没有Java应用程序的情况下发送数据吗?

3 个答案:

答案 0 :(得分:1)

这可以通过多种方式实现。一种常见的方法是打开连接并在客户端应用程序中执行阻塞读取。在收到某些东西时,它看起来像是从服务器推送。然后你处理推送并进行另一次阻塞读取。

如果Web服务器上有适合您的内容,另一种选择是定期检查。您可以将重试间隔设置得足够频繁,以便从应用程序的角度看起来像是实时推送。

答案 1 :(得分:1)

如果您使用HTTP我认为最聪明的方法是放弃实时要求并使用每5秒轮询一次服务器的线程。保持HTTP连接始终打开是昂贵的,因为它会阻止请求处理器线程并限制您可以拥有的客户端数量。

如果您确实需要近乎实时的更新(通常不是这种情况),您也可以考虑转移到注册机制之类的东西。您必须在客户端上打开服务器并让服务器在客户端向服务器注册其地址后推送更新。

答案 2 :(得分:1)

如果您有足够的服务器资源 你可以考虑使用websockets。

每台PC都可以打开服务器的套接字。 当您打开套接字时,您需要向服务器发送该PC的唯一ID。 然后,您需要将此ID存储在包含所有在线PC和套接字的某个数据库或文件中。

然后服务器将知道哪些PC在线以及用于与该PC通信的套接字。在此之后,您可以根据您的应用向PC发送所需的任何信息。