以聊天室为例,定时器可以以房间号来做并且房间里的人共享这个定时器吗?

啊哒梨

使用的是 GatewayWorker
使用场景:用户打开页面,页面就开始向设备发送消息,获取数据。

可以以房间号来做定时器定时向房间里的人推送消息吗?因为每个房间推送的内容不一样。
房间里的人共享这个定时器吗?这样房间就只需要创建一个定时器了,当房间没人的时候,就可以关闭这个定时器。

感谢各位大大回复!

2763 1 0
1个回答

walkor

1、可以
2、可以共享,没人的时候其实也不用关闭,定时器里没有要操作的东西就return就好了。

  • 啊哒梨 2017-07-19

    感谢大大回复。
    因为推送的内容不是固定的,而且房间数也有可能随时在变化。
    下面的流程会不合理吗?

    • 单独起一个worker来做Timer任务。
    • 在onWorkerStart里添加Timer.
      1. 在定时器里查询数据库中可用的房间,
      2. 为每个房间分配一个定时器(只执行一次),
      3. 房间定时器查询当前房间是否有人
        • 没人:return。
        • 有人:查询数据库中房间定制的消息并推送到客户端中。
  • walkor 2017-07-19

    很好的流程

  • walkor 2017-07-19

    推荐这样

  • 啊哒梨 2017-07-19

    @1:感谢大大的回复!

年代过于久远,无法发表回答
🔝