对于Web服务应用程序,我希望服务器能够通知客户端某些事件。启动客户端时,他会调用其中一个WS方法来获取所需的一些信息。然后,存储此信息的服务器会持续监听这些信息的更改,如果有更改,则会通知相关客户端。
我不知道网络服务是否是解决我问题的好方法?我不知道它如何与TCP连接有关,因为服务器可能会在很长一段时间后通知客户端。
解决此类问题的最佳架构是什么?
由于
编辑:我看过一些建议使用Comet的讨论,但如果您认为有更简单,更方便的解决方案,请告诉我。由于我从头开始这个项目,我没有任何限制。
我还可以使用轮询模型,其中客户端定期轮询服务器以获取他们需要的信息,但是我需要考虑此模型可能在服务器上创建的负载。我不知道当有很多客户端时,Web服务是否可以支持这样的负载。
我还查看了Servlet 3.0提供的异步功能,但我不知道它如何解决我的问题。
答案 0 :(得分:0)
没有轮询:套接字
使用轮询和网络服务:你应该使用etag(html)。
当客户轮询时,他发送带有etag的请求。 webservice以200(ok)和数据或304(未修改)响应。 304没有body =>交通不那么
答案 1 :(得分:0)
您可以在客户端上实现回调方法,而不是客户端轮询服务器,以便当服务器希望向客户端发布某些更改时,服务器可以使用客户端提供的回调方法。
答案 2 :(得分:0)
我可以使用Web服务解决方案考虑以下两种方法之一:
回调:当客户端调用服务器时,它会将其回调url和一个id(即相关ID)保留。当服务器想要回复客户端时,它只会使用回调URL来通知。服务器可以使用各种方法异步处理请求。您的客户端不需要是Web服务,但它应该能够接受请求(回调)。它可以是一个servlet等。
轮询:当客户端向服务器发出请求时,它会收到一个id,比如requesttid。在指定的间隔后,客户端使用此请求ID轮询服务器以获取响应。需要基于处理时间的合理超时和轮询间隔。