streamAPI与Rest API?

这里的典型例子是Twitter的API。 我从概念上理解REST API是如何工作的,本质上它只是一个针对你的特定请求的服务器查询,然后你接收到响应(JSON,XML等)。

但是我不确定stream媒体API是如何在幕后工作的。 我知道如何使用它。 例如用Twitter来收听回应。 从响应侦听数据,并在推文中大块。 在string缓冲区中build立块,并等待表示Tweet结束的换行符。 但是他们做了什么工作呢?

比方说,我有一堆数据,我想为networking上的其他人本地设置一个streamAPI,就像Twitter一样。 这是怎么做的,有什么技术? 这是节点JS可以处理的东西吗? 我只是想把他们正在做的事情包围起来,让这件事情起作用。

Twitter的streamAPI是基本上是一个长期运行的请求,保持开放,数据被推入,并在可用时。

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

正如你所猜测的,Node.js模型比stream式连接的想法要好得多,比说servlet模型要好得多。 这两个请求和响应在Node.js中都以stream的forms公开,但是不占用整个线程或进程,这意味着只要数据保持打开而不占用过多的资源,就可以继续将数据推入stream中(尽pipe是主观的)。 从理论上讲,你可以有很多并发的开放响应连接到一个进程,并且只在需要的时候才写入每个进程。

如果你还没有看过, Node.js的HTTP文档可能是有用的。

我还会看看technoweenie的Twitter客户端 ,看看这个API的消费者端是什么样的,特别是 Node.js, stream()函数 。