【发布时间】:2021-11-22 04:00:53
【问题描述】:
'最终频道 = WebSocketChannel.connect( uri.parse('wss://echo.websocket.org'), );'
- 可以在 Web 应用程序中创建和连接 但无法在安卓模拟器中连接
【问题讨论】:
标签: flutter dart web emulation
'最终频道 = WebSocketChannel.connect( uri.parse('wss://echo.websocket.org'), );'
【问题讨论】:
标签: flutter dart web emulation
当我这样做解决了我的问题
【讨论】:
有两个库实现了 WebSocket 类 - 一个在 web 上运行,另一个在 Andoroid 上运行。
您可以通过创建一个简单的工厂函数来解决这个问题。您将需要创建几个文件:
websocket_client_factory.dart
export 'websocket_client_factory_null.dart'
if (dart.library.html) 'websocket_client_factory_web.dart'
if (dart.library.io) 'websocket_client_factory_server.dart';
websocket_client_factory_null.dart
import 'package:web_socket_channel/web_socket_channel.dart';
WebSocketChannel makeWsClient(String url) {
throw 'Platform not supported';
}
websocket_client_factory_server.dart
import 'package:web_socket_channel/io.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
WebSocketChannel makeWsClient(String url) =>
IOWebSocketChannel.connect(url, protocols: ['graphql-ws']);
websocket_client_factory_web.dart
import 'package:web_socket_channel/html.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
WebSocketChannel makeWsClient(String url) =>
HtmlWebSocketChannel.connect(url, protocols: ['graphql-ws']);
现在,从您的原始文件中导入工厂文件,然后调用工厂函数:
import 'package:./websocket_client_factory.dart';
...
var channel = makeWsClient(wssUrl);
【讨论】: