Поскольку WebSocket в Dart не позволяет напрямую установить SecurityContext (который мне нужен для проверки сертификатов), я хотел бы установить соединение с SecureSocket экземпляра, а затем используйте конструктор WebSocket.fromUpgradedSocket для создания из него экземпляра WebSocket.
Эта идея изначально была предложена здесь .
Однако я незаставить его работать со следующим кодом (хотя я хочу, чтобы 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, сокет типа WebSocket, а myListener - это функция, которая выводит некоторую отладочную информацию.заявления, когда сообщение было получено.Я не получаю ошибку, но и не попадаю в слушатель - что я делаю, когда заменяю первые две строки этой:
socket = await WebSocket.connect('ws://echo.websocket.org');
Я предполагаю, что проблема в том, что мой носок Socket ''не обновляется, в то время как исходный код WebSocket для упомянутого конструктора четко гласит: «Создает WebSocket из уже обновленного сокета.».
Так что мой вопрос: возможно ли это?с существующими классами Dart для обновления клиентского (Secure-) Socket до обновленного (Secure-) Socket?(что позволило бы преобразовать его в экземпляр WebSocket)