对多个页面使用单个IOWebSocketChannel

时间:2019-12-05 23:59:36

标签: flutter websocket

我正在开发聊天应用程序。我无法决定如何处理套接字连接,然后转向一个临时解决方案。它具有一个static IOWebSocketChannel重新分配的onGenerateRoute。据我所知,如果要使用单个通道,这是一个非常糟糕的做法。因此,我需要一种更好的处理套接字的方法

我想以单身身份在应用程序中一次连接到频道并在各个页面上对其进行管理,但是当我想在两个不同的PageRoute上使用同一频道的流时,出现“此流已经在监听”错误。

我该如何处理这种情况?

-----更新

asBroadcastStream在我的使用中不起作用。

GitHub myapp.dart

asBroadcastStream的

One usage。 asBroadcsatStream的Another usage。任何建议表示赞赏。

1 个答案:

答案 0 :(得分:1)

您可以将流转换为可以具有多个侦听器的BroadcastStream。

IOWebSocketChannel channel = IOWebSocketChannel.connect("wss://echo.websocket.org");
Stream stream = channel.stream.asBroadcastStream();