java Restlet流数据
我正在执行一项任务,从设备读取数据,并通过web服务使其可用。数据每秒读取4次。我希望web客户端有一个开放的HTTP连接,只要客户端保持连接打开,就可以使用chunked transfer以流的形式获取设备读数
作为概念证明,我想从一个服务开始,它不断生成一个随机数,每秒4次,用json封装,并将其传输到客户端。我试图根据twitter streaming api.对其进行松散的建模
我正在使用restlet 2.1.2创建该Web服务,但我不确定应该使用哪种表示来实现这一点。我试着搜索这个,但没有找到任何有用的东西。有没有人能给我指出正确的方向,我应该使用什么,也许还有一些例子
谢谢
# 1 楼答案
为了实现您想要做的事情,我会使用WriterRepresentation(但请参见我的answer to your other question),但我很确定您走的是错误的架构方向
实际上,以下图片来自您链接的文档
显示了即使是Twitter流媒体api也不打算由用户连接,而是由后台进程连接,这些进程在HTTP可访问的存储中下载消息。用户只轮询HTTP服务器,该服务器从存储读取消息并将消息发送回客户端
作为一种断开连接的协议,HTTP实现了巨大的可扩展性,这在其他情况下是不可能的。如果每个客户端建立一个由专用服务器线程支持的持久TCP连接,您将迅速消耗服务器资源!此外,用户代理和服务器之间的任何HTTP代理都可能导致意外行为
因此,如果您绑定到HTTP协议,用户代理应该轮询。您可以使用Last-Modified/If-Modified-Since或Etag/If-None-Match这样的头来减少网络负载
但是,如果您可以采用不同的协议,我强烈建议您在连接的TCP协议上尝试使用服务总线