11

我正在执行这项任务,我将从设备读取数据并通过 Web 服务使其可用。数据每秒读取 4 次。我希望 Web 客户端具有开放的 HTTP 连接,并使用分块传输将设备读数作为流获取,只要客户端保持连接打开即可。

作为概念验证,我想从一个不断生成随机数的服务开始,每秒 4 次,将其包装在 json 中并将其流式传输到客户端。我正在尝试基于twitter 流 api 对其进行松散建模。

我正在使用 restlet 2.1.2 来创建该 web 服务,但我不确定我应该使用哪个表示来实现这一点。我试着搜索这个,但没有找到任何有用的东西。有人可以指出我应该使用什么的正确方向,也许还有一些例子。

谢谢

4

1 回答 1

3

为了实现您想要做的事情,我会使用WriterRepresentation(但请参阅我对您的其他问题的回答),但我很确定您的架构方向是错误的。

实际上,您链接的文档中的以下图片

在此处输入图像描述

展示了即使是 Twitter 流 api 也不打算由用户连接,而是由后台进程在 HTTP 可访问的存储中下载消息。用户仅轮询 HTTP 服务器,该服务器从存储中读取消息并将其发送回客户端。

作为一个断开连接的协议,HTTP实现了巨大的可扩展性,否则是不可能的。如果每个客户端都建立一个由专用服务器线程支持的持久 TCP连接,您将迅速耗尽服务器资源!此外,用户代理和服务器之间的任何 HTTP 代理都可能导致意外行为。

因此,如果您绑定到 HTTP 协议,用户代理应该轮询。您可以使用Last-Modified / If-Modified-SinceEtag / If-None-Match等标头减少网络负载。

但是,如果您可以采用不同的协议,我强烈建议您尝试使用连接的 TCP 协议上的服务总线

于 2013-04-21T22:29:52.507 回答