amazon-web-services - Flutter 无法使用 Web Socket Channel 连接到 AWS
问题描述
我正在编写一个需要使用 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));
我的其余代码与指南类似,但是服务器似乎没有收到任何数据,我的客户端也没有。任何人都可以分享上述问题的工作示例吗?先感谢您。
解决方案
我有一个工作示例要分享,您可以看到连接是如何完成的以及消息是如何发送的,这个示例使用了 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);
}
推荐阅读
- angularjs - 无法在 angularjs 控制器中注入 $uibModal?
- javascript - 视差背景图像似乎被剪切了
- html - 增加引导导航栏的大小
- javascript - javascript 如何使用样式属性找到哪些元素包含背景图像
- c - if 语句在 while 循环中不起作用
- codeigniter - 如何将分页添加到 codeigniter
- javascript - graphQl - 参数具有无效值预期 \"contentfulStranNaslovQueryString_2\",发现不是对象
- python - 如何使用 pyplot 使 x 轴适应音频/声学?
- git - 分叉存储库镜像失败
- python-3.x - TF | 训练完成后如何从 CNN 进行预测