java - ReSTLet 流数据

标签 java restlet chunked-encoding restlet-2.0

我正在执行这项任务,我将从设备读取数据并通过 Web 服务提供这些数据。数据每秒读取 4 次。我希望网络客户端有一个开放的 HTTP 连接,并使用 chunked transfer 将设备读数作为流获取只要客户端保持连接打开。

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

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

谢谢

最佳答案

为了实现您想要做的事情,我会使用 WriterRepresentation (但请参阅我的 answer to your other question ),但我很确定您走错了架构方向。

确实是您链接的文档中的以下图片

enter image description here

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

作为一种断开连接的协议(protocol),HTTP 实现了其他方式无法实现的大规模可扩展性。如果每个客户端建立由专用服务器线程 支持的持久 TCP 连接,您将迅速耗尽服务器资源!此外,用户代理和服务器之间的任何 HTTP 代理都可能导致意外行为。

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

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

关于java - ReSTLet 流数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15995179/

相关文章:

分块问题时 Tomcat gzip

c - 如何使用分块编码发送 HTTP 回复?

java - Eclipse 找不到文件

java - 最近开始学习hibernate,有以下疑惑

java - 将上下文属性传递给 ServerResource

java - 用于测试 Servlet 部署的 RESTful Web 服务的 JSP 客户端

python - 使用 Requests 2.3.0 避免空 block 的 ChunkedEncodingError

java - 将克隆的 Servlet 部署到 Tomcat

java - SMTPTransport 作为实现 MessageDrivenBean 和 MessageListener 的类的私有(private)静态

url - REST/ROA 架构 - 在 URL 中发送数据库搜索/查询/过滤/排序参数? (>、<、IN 等...)