gpt4 book ai didi

websocket - 如何使 websocket 流广播到许多其他页面?

转载 作者:IT王子 更新时间:2023-10-29 06:34:45 24 4
gpt4 key购买 nike

我有一个正在监听的 websocket 流:

widget.channel.stream.listen((data) {
print("!!!!new msg: $data");
var dataJson = json.decode(data);
print(dataJson["content"]);
// do my job
setState(() {
_allAnimateMessages.insert(0, newMsg);
});
newMsg.animationController.forward();
});

但是,当再次进入该页面时,出现错误提示:
错误状态:流已被收听。

如何让它成为广播并且其他页面可以接收到该广播?

最佳答案

您可以使用广播。

 //Here is the solution
StreamController<String> streamController = new StreamController.broadcast(); //Add .broadcast here

//Now you can listen from various places
@override
void initState() {
super.initState();

print("Creating a StreamController...");
//First subscription
streamController.stream.listen((data) {
print("DataReceived1: " + data);
}, onDone: () {
print("Task Done1");
}, onError: (error) {
print("Some Error1");
});
//Second subscription
streamController.stream.listen((data) {
print("DataReceived2: " + data);
}, onDone: () {
print("Task Done2");
}, onError: (error) {
print("Some Error2");
});

streamController.add("This a test data");
print("code controller is here");

}

字体:https://medium.com/@ayushpguptaapg/using-streams-in-flutter-62fed41662e4

使用广播时,您可以在同一个流中有多个监听器。

如果你简单地使用没有“.broadcast()”的流你只能有一个监听器

关于websocket - 如何使 websocket 流广播到许多其他页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50482557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com