【问题标题】:How to implement long polling with socket.io?如何使用 socket.io 实现长轮询?
【发布时间】:2014-01-08 23:57:22
【问题描述】:

目前,我在 node.js 中创建了一个应用程序,以使用带有 mysql 的 socket.io 向所有客户端发送通知。因此,我的 mysql 数据库中的任何更改都将通过 socket.io 立即通知多个客户端。应用程序的工作魅力。

我面临的问题与性能问题有关。

我的浏览器不断收到来自服务器的推送通知,这降低了我的浏览器的性能。 I/Client 只需要在数据库更改时获取通知,其余时间服务器应处于暂停状态,而不向客户端发送任何消息。

换句话说,我需要实现长轮询技术。

如何使用 socket.io 实现长轮询?

我已经用谷歌搜索了一个示例,但我没有找到可以帮助我在 node.js 中使用 socket.io 和 mysql 实现长轮询

是否可以用socket.io实现长轮询?

如果是这样,有人可以将我重定向到一些有用的示例链接吗?

提前致谢。

【问题讨论】:

    标签: mysql node.js socket.io long-polling


    【解决方案1】:

    您可以强制 socket.io 仅使用长轮询:

    io.set('transports', ['jsonp-polling']);
    

    但我不认为长轮询是您正在寻找的解决方案。您应该独立于所使用的基础技术。我可能会这样做:

    function writeToMysqlDb(data) {
        mySqlDriver.write(data); //whatever you use to write data to MySql
        socket.emit('dbChanged', data); //send the same data to all connected clients
    };
    

    我会将传输保留为默认选项:“传输默认为 websocket、htmlfile、xhr-polling、jsonp-polling”

    【讨论】:

      【解决方案2】:

      您可以构建一个池来将持续推送的通知合并到每秒一个通知中,以减少推送次数。

      【讨论】:

      • 您好,尼尔森感谢您的回复。有没有应该如何实施的例子???因为我是这个 nodejs、socket.io 和长轮询世界的新手。任何例子都会帮助我。
      猜你喜欢
      • 2016-03-10
      • 1970-01-01
      • 2017-09-12
      • 2011-09-16
      • 2012-06-02
      • 2013-02-17
      • 2010-09-24
      相关资源
      最近更新 更多