socket.io如何处理队列消息?
现有一个广播屏,可能有1个或者任意多个用户会发送消息到广播屏进行广播,
每次广播需要一定的时间将内容播放完毕(播放声音的方法是异步的),
当同一时间有多个用户发送广播的请求时,
如何保证能按照顺序一个一个进行播放?
能否在socket.io中生成一个队列?
一条广播进来后,再播放下一条。
类似排队的机制,
应该如何处理这个问题,
困扰许久,恳请大神给予方案解决,
在此谢过。
分出一个管理员出来,不管有多少用户发消息都把消息发给管理员,存在队列里,管理员再负责把消息发送给大屏,管理员每次只发给大屏一个消息,等待消息播放完,大屏给管理员回传播放完的信号,这时候管理员再去看队列是否有下一个消息,有的话就传给大屏,没有的话就搁置,继续等待下一个消息过来。触发管理员的条件:一个消息进来先去看管理员的状态,如果管理员没在等待大屏信号回传,处于空闲状态,直接触发管理员,如果处于等待大屏回播放完毕信号的状态,那就直接塞进队列,因为每次收到回传信号都会检测一下队列,所以也都是有序的,且自动的,也不用轮寻。