使用Node.js跟踪XMLHTTPRequests

时间:2011-04-22 13:17:33

标签: javascript node.js streaming xmlhttprequest

我刚刚开始学习Node.js并且对它的实时功能非常感兴趣,特别是对于Socket.io。从那以后,我写了一个非常基本的脚本来连接到Twitter的流媒体服务器并向所有连接的客户端播放推文。

为了构建它,我使用http.createClient连接到stream.twitter.com并添加到相关的responsedata事件处理程序中。一切都很顺利。

显然,Twitter的Streaming API几乎输出了一个无限加载的网页,以及为什么使用data事件处理程序可以很好地使用它。但是,是否有可能使其他类型的网站“流畅”?

例如,如果客户端(浏览器)使用XMLHTTPRequest定期更新网站,是否可以使用Node.js的HTTP API跟踪这些请求的输出?或者类似的Node.js扩展名?

感谢。

2 个答案:

答案 0 :(得分:1)

网站不会定期使用XMLHTTPRequest。客户端定期将XMLHTTPRequests发送到URL。

使用正确的标头简单调用http.request(options, callback)应该模拟XHR。大多数这些服务器也将接受正常的POST或GET请求。

如果您希望node.js连接到服务器并模拟浏览器,那么像zombie这样的东西可以很好地为您服务。它声称支持XMLHTTPRequest。

答案 1 :(得分:0)

最好的情况是在仪表板和节点服务器之间使用Web套接字。这样,节点将立即通知您的仪表板上已更新某些内容(我假设您可以稍微修改仪表板以接受此类连接,只要您有权访问就不会很困难。)

然后,您可以在客户端使用长轮询,即向节点服务器发送请求并等待。节点将接收请求,然后向其注册事件。它从仪表板接收更新的那一刻起,它将触发事件,该响应将响应一个接一个地发送给所有客户端。

我建议你看一下http://github.com/andrewdavey/vogue。它做了类似的事情,但功能是不同的。