【问题标题】:Flutter WebSocket works in web application but not in android emulatorFlutter WebSocket 适用于 Web 应用程序,但不适用于 android 模拟器
【发布时间】:2021-11-22 04:00:53
【问题描述】:

'最终频道 = WebSocketChannel.connect( uri.parse('wss://echo.websocket.org'), );'

  1. 可以在 Web 应用程序中创建和连接 但无法在安卓模拟器中连接

【问题讨论】:

    标签: flutter dart web emulation


    【解决方案1】:
    1. 在我的项目中,WebSocket 连接需要身份验证
    2. 在 Web 应用程序中自动传递 cookie 和身份验证令牌 websocket 连接
    3. 但是在移动应用中我们需要设置cookies和身份验证 手动令牌

    当我这样做解决了我的问题

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。
    【解决方案2】:

    有两个库实现了 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);
    

    【讨论】:

      猜你喜欢
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      相关资源
      最近更新 更多