【发布时间】:2018-12-11 10:08:21
【问题描述】:
由于 Dart 中的WebSocket 不允许直接设置SecurityContext(我需要进行证书检查),我想与SecureSocket 实例建立连接,然后使用 WebSocket.fromUpgradedSocket 构造函数从中创建一个 WebSocket 实例。
这个想法最初是由here提出的。
但是,我无法让它与以下代码一起使用(虽然我想要 wss,但甚至 ws 都不起作用):
sock = await Socket.connect('ws://echo.websocket.org', 80);
socket = WebSocket.fromUpgradedSocket(sock, serverSide: false);
socket.listen(myListener);
// Send some dummy data
var list = utf8.encode("hello");
var data = list is Uint8List ? list : Uint8List.fromList(list);
socket.add(data);
这里 sock 是 Socket 类型,socket 是 WebSocket 类型,而 myListener 是一个在收到消息时打印一些调试语句的函数。我没有收到错误,但我也没有进入侦听器 - 当我用这一行替换前两行时我会这样做:
socket = await WebSocket.connect('ws://echo.websocket.org');
我认为问题在于我的 Socket 'sock' 没有升级,而上述构造函数的 WebSocket source code 明确指出:'从已升级的套接字创建 WebSocket。'。
所以我的问题是,现有的 Dart 类是否可以将客户端 (Secure-)Socket 升级为升级后的 (Secure-)Socket? (然后允许将其转换为 WebSocket 实例)
【问题讨论】:
标签: websocket dart flutter certificate