0

场景是这样的 - 我有一个我正在用 node.js 编写的前端 Web 服务器。我有一个尚未编写的中间层内部 API 层,它可以用任何东西编写。内部 API 是唯一允许与数据存储(恰好是关系数据库)对话的东西。

免责声明:我是 node.js 初学者。

node.js 想要异步进行数据访问——这使得像 Database.query.all 这样的调用效率低下,因为响应回调在整个列表组装完成之前不会启动。我读过的文档表明,最好一次将结果流式传输给客户端。

我想知道如何编写前端和中间层 http 内部 API,以便我可以利用 node.js 的异步性,here。

我想问题是“如何通过 http 流式传输结构化数据”?我想这就是我要求支持的内部 API 的功能。

我是不是该:

  • 让前端请求一个 ID 列表,然后向后端分别发出一个请求?听起来很粗糙而且很健谈,而且我看不到请求会按照我想要的顺序返回的保证,所以我必须等到我把所有东西都放在前端......?
  • 让前端针对数据页面的内部 API 发出一系列请求,并将每个块视为一个流段......?
  • 只为第一个屏幕的价值获取足够的数据,然后请求后续的块,当它到达时将每个块写入列表的末尾?
  • 更聪明的东西!?

(注意:请不要说“摆脱中间层,这样你就可以直接与数据库对话”——这不是一个选项)

4

1 回答 1

0

我不确定您所说的“流媒体”到底是什么意思;从您给出的想法来看,它可以被解释为一些HTTP 服务器推送或长轮询技术,或者只是发出后续的 XHR 请求。

由于您使用的是节点,因此我推荐Socket.io,它可以让您真正随时随地将数据推送到浏览器。

如果您选择使用 XHR,只需告诉浏览器接下来要请求什么。

如果这不适合您,并且您想使用服务器推送或长轮询,那么response.write()似乎是要走的路。但是您可能会遇到请求超时等问题。

于 2012-04-04T15:15:35.633 回答