我在每台 PC 上都有几台 PC,我设置了小型 swing 应用程序,通过 JSON 请求获取数据到一个 Web 服务器。我可以从 Web 服务器接收数据而不向 Web 服务器发送请求,换句话说,Web 服务器可以在没有 Java 应用程序请求的情况下发送数据吗?
问问题
1612 次
3 回答
1
这可以通过多种方式实现。一种常见的方法是打开一个连接并在客户端应用程序中进行阻塞读取。收到东西后,它看起来像是来自服务器的推送。然后您处理推送并进行另一次阻塞读取。
另一种选择是定期检查网络服务器上是否有适合您的东西。您将重试间隔设置得足够频繁,因此从您的应用程序的角度来看,它看起来像是实时推送。
于 2012-12-04T10:07:43.697 回答
1
如果您使用 HTTP,我认为最明智的方法是放弃实时要求并使用每 5 秒轮询一次服务器的线程。始终保持 HTTP 连接打开的成本很高,因为它会阻塞请求处理器线程并限制您可以拥有的客户端数量。
如果您确实需要近乎实时的更新(通常情况并非如此),您也可以考虑迁移到注册机制之类的东西。您必须在客户端上打开一个服务器,并在客户端向服务器注册其地址后让服务器推送更新。
于 2012-12-04T10:15:02.497 回答
1
如果你有足够的服务器资源,你可以考虑使用 websockets。
每台 PC 都可以打开一个到服务器的套接字。当您打开套接字时,您需要向服务器发送 pc 的唯一 ID。然后,您需要将此 ID 存储在包含所有在线 pc 和套接字的数据库或文件中。
然后服务器将知道哪些电脑在线以及使用哪个套接字与这台电脑通信。在此之后,您可以根据您的应用程序向这台 PC 发送您需要的任何信息。
于 2016-11-12T14:09:02.477 回答