Streaming API vs Rest API?

ahe*_*ick 25 api twitter streaming node.js

这里的规范示例是Twitter的API.我从概念上理解REST API是如何工作的,本质上它只是一个查询服务器,用于您的特定请求,然后您可以接收响应(JSON,XML等),非常好.

但是,我不确定流API如何在幕后工作.我理解如何消费它.例如,Twitter听取回复.从响应中听取数据,并在其中发送推文.在字符串缓冲区中构建块并等待表示Tweet结束的换行符.但他们正在做些什么来使这项工作?

假设我有一堆数据,我想在本地设置一个流API,供网络上的其他人使用(就像Twitter一样).这是怎么做的,有哪些技术?这是Node JS可以处理的吗?我只是想绕过他们正在做的事情来使这件事发挥作用.

Ric*_*arr 21

Twitter的流API是它本质上是一个长时间运行的请求,它保持打开状态,数据在它可用时被推送到它.

这种情况的后果是服务器必须能够处理大量并发的开放HTTP连接(每个客户端一个).许多现有的服务器管理得不好,例如Java servlet引擎为每个请求分配一个线程,这可能会(a)变得非常昂贵,并且(b)快速达到正常的最大线程设置并阻止后续连接.

正如您所猜测的那样,Node.js模型比使用servlet模型更符合流式连接的想法.请求和响应都作为Node.js中的流公开,但不占用整个线程或进程,这意味着只要数据保持打开状态就可以继续将数据推送到流中,而不会占用过多的资源(尽管如此是主观的).理论上,您可以将大量并发开放响应连接到单个进程,并在必要时仅写入每个进程.

如果你还没有看过它,那么Node.jsHTTP文档可能会有用.

我还要看一下technoweenie的Twitter客户端,看看该API的消费者端是什么样的Node.js,特别是stream()函数.