如何在指定时间推送消息到H5,然后关闭当前页面

demoo

问题描述

目前使用的webman安装gatewayworker插件,已经实现websocket连接后主动向H5发送消息

现在有个问题就是怎么在指定的时间去推送,需要及时性很高

例如:发布一个收集表,当结束时间到了,能主动发送消息到H5关闭当前已经打开在收集表页面的用户页面(这个结束时间可能在一个月之后的某个时间)

目前想到的是 用定时任务每秒去查询结束时间是否超过当前时间,然后判断是否发送消息,,,,但是结束时间很长的话,定时任务中间一直是空跑,感觉没有意义

请教大佬有没有其他方案???

703 2 0
2个回答

nitron

不知道为何会有这么奇怪的需求,为何不能在收集时发现已过期由客户端自行关闭,非要服务端主动通知关闭,当然办法也不是没有,分而治之就好,你这个任务看似是每秒检测,实际上又不用从开始到结束都要每秒检测

举个例子: 11月10日15:00关闭,你只需要11月10日14:55分甚至14:58分开始每秒检测即可,在那之前压根都不需要检测,那么如何实现呢?

设定一个5分钟(X)的定时任务,检测接下来6分钟(X+1)内是否有需要进行每秒检测的任务,如有则启动,没有就什么都不干,那么你空跑的就少了,5分钟定时检测6分钟内是为了防止单个定时任务因为执行时间过长而导致覆盖不全的问题,但需要自行判断秒级定时任务的重复执行,还有一些边界Case我可能还没想到,你自己琢磨吧,毕竟只是个思路.

总体而言就跟设定项目进度一样,先分几个大体的时间点分步走,再细化到每一步的具体任务,假如一开始就细化具体任务,那这项目大概率没法干

  • 暂无评论
powerbowen

这个需求有些奇怪
1.设置时间,然后根据时间生成队列,在消费队列时判断时间是否正确(因为可能存在修改时间的情况)
2.定时脚本,指定间隔时间查询且处理一次,查询到符合条件数据发送,不过比较浪费而且效率太低了
3.做个接口、按钮,人为触发发送,想怎么玩就怎么玩

  • 暂无评论
年代过于久远,无法发表回答
🔝