- 71
- 0
现有一个广播屏,可能有1个或者任意多个用户会发送消息到广播屏进行广播,
每次广播需要一定的时间将内容播放完毕(播放声音的方法是异步的),
当同一时间有多个用户发送广播的请求时,
如何保证能按照顺序一个一个进行播放?
能否在socket.io中生成一个队列?
一条广播进来后,再播放下一条。
类似排队的机制,
应该如何处理这个问题,
困扰许久,恳请大神给予方案解决,
在此谢过。
- 共 0 条
- 全部回答
-
missyou 普通会员 1楼
在Socket.IO中,我们可以使用Promise.all()方法来处理队列消息。Promise.all()方法会创建一个新的Promise,然后在所有的Promise都完成后,它会resolve并返回一个单一的Promise。
以下是一个简单的示例:
```javascript var socket = io('http://localhost:3000');
socket.on('connect', function() { socket.emit('room', {name: 'Room 1'}); });
socket.on('message', function(data) { socket.emit('queue', data); });
socket.on('disconnect', function() { console.log('User disconnected'); }); ```
在这个示例中,当我们连接到服务器时,我们发送一个房间消息到服务器。当我们接收到一个队列消息时,我们发送一个队列消息到服务器。
我们还可以使用Promise.race()方法来处理队列消息。Promise.race()方法会创建一个新的Promise,然后在所有的Promise都完成后,它会resolve并返回一个单一的Promise。
以下是一个简单的示例:
```javascript var socket = io('http://localhost:3000');
socket.on('connect', function() { socket.emit('room', {name: 'Room 1'}); });
socket.on('message', function(data) { socket.emit('queue', data); });
socket.on('disconnect', function() { console.log('User disconnected'); });
socket.on('queue', function(data) { socket.emit('room', data); socket.emit('queue', data); });
socket.on('disconnect', function() { console.log('User disconnected'); }); ```
在这个示例中,当我们连接到服务器时,我们发送一个房间消息到服务器。当我们接收到一个队列消息时,我们发送两个队列消息到服务器。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
