【问题标题】:Is there a way in Node.js to push database results to client asynchronously?Node.js 中有没有办法将数据库结果异步推送到客户端?
【发布时间】:2012-10-01 13:56:45
【问题描述】:

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

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

或者这只是错误的方法?

【问题讨论】:

    标签: node.js knockout.js comet faye


    【解决方案1】:

    在以前的项目中,我使用了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 良好工作的非常好的指南

    【讨论】:

    • socket.io 是迄今为止在 node.js 中完成此任务的最常用方法。
    猜你喜欢
    • 2018-05-13
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    相关资源
    最近更新 更多