【问题标题】:Flutter cannot connect to AWS with Web Socket ChannelFlutter 无法使用 Web Socket Channel 连接到 AWS
【发布时间】:2021-07-07 15:41:01
【问题描述】:

我正在编写一个需要使用 Web Socket Channel 包连接到 Web 服务器的程序。我正在按照指南 https://flutter.dev/docs/cookbook/networking/web-sockets 连接到 AWS 服务器。链接是这样的:

wss://xxxxxxx.execute-api.ap-southeast-1.amazonaws.com/dev/

使用包我能够连接并获取 connectionState.waiting,但我似乎无法收听来自服务器的任何数据,也无法向服务器发送数据。数据发送,格式如下:

Map message = {
      "action": 'subscribe',
      "channel": 'contentTest',
    };
channel.sink.add(jsonEncode(message));

我的其余代码与指南类似,但是服务器似乎没有收到任何数据,我的客户端也没有。任何人都可以分享上述问题的工作示例吗?提前谢谢你。

【问题讨论】:

    标签: amazon-web-services flutter websocket


    【解决方案1】:

    我有一个工作示例要分享,你可以看到连接是如何完成的以及消息是如何发送的,这个示例使用了 dart:io 中的 WebSocket 类。在编写此代码时,我遇到了 Web Socket Channel 的一些问题,不记得原因,所以我选择了 Dart WebSocket 类。

     Future<WatchResponse> WatchCollection(
          CollectionRequest collectionRequest, String token) async {
        try {
          WebSocket ws = await WebSocket.connect(
              "ws://${this.authority}/gapi/collection/watch?token=$token");
          if (ws.readyState == WebSocket.open) {
            ws.add(jsonEncode(collectionRequest.toMap()));
            return WatchResponse(ok: true, streamSubscription: ws.listen(null));
          }
        } on WebSocketException catch (err) {
          return WatchResponse(ok: false, webSocketExecption: err);
        }
        return WatchResponse(ok: false, webSocketExecption: null);
      }
    

    【讨论】:

      猜你喜欢
      • 2019-12-05
      • 1970-01-01
      • 2021-04-25
      • 2023-04-05
      • 1970-01-01
      • 2022-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多