2

假设您正在使用 Node.js 在数据库(本例中为 sqlite)上运行一系列查询。您知道这些查询可能需要一段时间来处理,并且您希望客户端在结果进来时进行更新。也就是说,您希望将结果异步推送到客户端,然后更新 DOM。

我认为我可以使用Faye(或其他一些彗星系统)、JavaScript 模板和 Knockout.js拼凑出一种方法。但是是否已经有一个框架或工具来做这种事情?

或者这只是错误的方法?

4

1 回答 1

4

在以前的项目中,我使用了 Socket.IO,它可以轻松地将更改推送到客户端。一个例子是这样的:

服务器代码:

socket.emit('ranQuery', { info: 'Info From Server!' });

客户代码:

socket.on('ranQuery', function(data) {
    console.log(data.info); // would output "Info From Server!"
    // update the DOM with the new information
} 

他们的网站上有很多工作示例。它可以像任何其他节点包一样安装,npm install socket.io.


更新:

打开并阅读您发布的链接后,我会说您的方法是正确的。虽然我从未听说过 Faye,但它似乎做与 Socket.IO 类似的事情(将对象从服务器发送到客户端),并且 KnockoutJS 将处理数据绑定(当您更新模型时,它也会在页面上更新)。如果您遇到任何障碍,我会说去吧并在这里发布问题。

我提出 Socket.IO 的唯一原因是它的易用性和文档。我最近开始了一个使用 AngularJS + Socket.IO 的项目。如果您要根据服务器的频繁更新在客户端进行大量更改,您可能还想看看AngularJS并在他们的网站上弄乱示例。

如果您认为这对您有用,请访问此博客文章 ( http://briantford.com/blog/angular-socket-io.html ),以获取有关让 AngularJS 与 Socket.IO 良好工作的非常好的指南

于 2012-10-11T00:36:35.177 回答