【问题标题】:How to execute an emit (socket.io) at a specific time with NodeJS?如何使用 NodeJS 在特定时间执行发射(socket.io)?
【发布时间】:2020-08-03 04:39:38
【问题描述】:

我有一个通过 socket.io 与 NodeJS 服务器通信的 android 应用程序。

我需要我的 NodeJS 服务器在特定时间(例如 7 点)向所有客户端发送发射。

例子:

socket.emit ('example', 'data', 'hour to emit');

感谢您的帮助!

【问题讨论】:

    标签: javascript node.js server socket.io


    【解决方案1】:

    我做了一些研究,显然 setTimeout 或 setInterval 是资源密集型的。最后,我在所需的时间选择了 CRON,它在 GET 中进行 HTTP 调用。谢谢!

    【讨论】:

      【解决方案2】:

      如果你想在你知道的静态时间执行一次,那么只需使用setTimeout 并计算服务器当前时间与发出时间之间的差并将其传递给setTimeout 调用。

      如果您想在已知的静态时间多次执行此操作,可以将这些时间存储在一个数组中,然后以 1 分钟的间隔使用 setInterval 来检查是否是时候执行发射了。

      实施完全取决于您的需求。也许您需要将执行时间存储在数据库中,然后制作一个 REST api 来检查它们并配置一个 cronjob 以每分钟调用这个 api。

      【讨论】:

        猜你喜欢
        • 2018-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-04
        • 2012-04-24
        相关资源
        最近更新 更多