我想实现一个聊天系统。
我陷入了用户真正快速发送多个消息的问题。尽管所有消息均以任何顺序到达服务器。
所以我想到了实现一个队列,其中每个消息都应该
首先被放入队列
等待轮到
轮到发出发帖请求
等待大约5秒钟,以获取服务器的响应
如果响应在时间范围内到达并且状态为OK,则消息已发送,否则消息发送失败。
在第5点的任何情况下,该消息都应出队,下一条消息应有机会。
现在,主要问题是,每个聊天头或我们正在与之交谈的用户可能有多个队列。我将如何实施?我真的是飞镖飞镖新手。请帮忙。谢谢!
答案 0 :(得分:2)
听起来您正在描述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);
}