【发布时间】: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
我有一个通过 socket.io 与 NodeJS 服务器通信的 android 应用程序。
我需要我的 NodeJS 服务器在特定时间(例如 7 点)向所有客户端发送发射。
例子:
socket.emit ('example', 'data', 'hour to emit');
感谢您的帮助!
【问题讨论】:
标签: javascript node.js server socket.io
我做了一些研究,显然 setTimeout 或 setInterval 是资源密集型的。最后,我在所需的时间选择了 CRON,它在 GET 中进行 HTTP 调用。谢谢!
【讨论】:
如果你想在你知道的静态时间执行一次,那么只需使用setTimeout 并计算服务器当前时间与发出时间之间的差并将其传递给setTimeout 调用。
如果您想在已知的静态时间多次执行此操作,可以将这些时间存储在一个数组中,然后以 1 分钟的间隔使用 setInterval 来检查是否是时候执行发射了。
实施完全取决于您的需求。也许您需要将执行时间存储在数据库中,然后制作一个 REST api 来检查它们并配置一个 cronjob 以每分钟调用这个 api。
【讨论】: