asynchronous - 飞镖中的未来队列
问题描述
我想实现一个聊天系统。
我被困在用户非常快速地发送多个消息的地步。尽管所有消息都到达服务器,但以任何顺序。
所以我想实现一个队列,每条消息都应该
首先被放入队列
等待轮到
轮到发帖请求
等待服务器响应大约 5 秒
如果响应在时间范围内到达并且状态正常,则消息发送,否则消息发送失败。
在第 5 点的任何情况下,消息都应出队,并且应给下一条消息机会。
现在,主要问题是,每个聊天头或我们正在与之交谈的用户可能有多个队列。我将如何实施?我对飞镖和颤振真的很陌生。请帮忙。谢谢!
解决方案
听起来您正在描述一个Stream
- 一系列有序的异步事件。
https://www.dartlang.org/guides/language/language-tour#handling-streams https://www.dartlang.org/guides/libraries/library-tour#stream
创建一个StreamController
,并在消息进入时向其中添加消息:
var controller = StreamController<String>();
// whenever you have a message
controller.add(message);
收听该流并上传消息:
await for(var messsage in controller.messages) {
await uploadMessage(message);
}
推荐阅读
- angular - 选择是否使用离子和角度框架显示一个组件或另一个组件
- mifare - 如何获取 Mifare DESFire 文件大小
- python - 如何在不使用正则表达式的情况下交换特定位置的特定子字符串?
- reactjs - 将“授权承载{token}标头”附加到受保护的“客户端”axios请求是否安全?
- python - 将多个 2D 数据集堆叠到新的第三维(xarray)
- css - 使用两个相同的属性选择器 [class][class]
- java - 如何使用多态性从模型类创建 GUI 类
- php - 从 webm 10sec 块创建 HLS 流
- php - 如何在 Yii2 中仅以 json 格式响应错误?
- python - Python class setter - are class attributes reassigned every time a new instance is created?