Node.js Express呈现多个后续视图

我想做一些事情:

//client -> notifies server that client is connected. //server -> begins fetching information from DB (series of both async and synchronous requests). //as sets of data become available on server -> server pushes updates to client via res.render() 

基本上我有一个客户端上的菜单项,我想要更新该菜单作为服务器提取准备好的数据。 有没有办法做到这一点? 我注意到我做不到

 res.render('something'); // again res.render('somethingElse'); 

因为一旦渲染被调用,那么响应被发送,并且渲染不能被再次调用

“错误:发送后无法设置标题。”

有什么build议么?

您可能会从使用WebSockets获益:

http://en.wikipedia.org/wiki/WebSocket

这篇文章有一些信息:

哪个websocket库与Node.js一起使用?

HTTP通过请求/响应工作。 通常一旦发送响应,连接就会终止。

要将数据从服务器传输到客户端,可以使用websocket 。 有一个非常stream行的node.js模块叫做socket.io ,它简化了使用websocket。

使用socket.io,客户端代码如下所示:

 var socket = io.connect('http://yourserver.com'); socket.on('data', function (data) { updateMenu(data); }); 

和服务器代码:

 var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.emit('data', data); getMoreDataFromDb(function(data){ socket.emit('data', data); }); // etc.. }); 

另外,如果你想要一个更简单的解决scheme,你可以向服务器发出多个小的Ajax请求,直到获得所有的数据:

 (function getData(dataId){ $.ajax({ url:"yourserver.com/getdata", data: dataId || {}, success:function(data){ updateMenu(data); if(data) getData({ lastDataReceived: data.lastId }); // server is still returning data, request more } }); })();