У меня следующий код, я не могу понять, почему я получаю 401 в ответ. Я использую webrt c для совершения видеозвонков. Я получаю 401 в качестве кода ответа. Я скачал репозиторий github и изменил URL и имя порта.
Future<WebSocket> _connectForSelfSignedCert(String host,int port,String url) async {
try {
Random r = new Random();
String key = base64.encode(List<int>.generate(8, (_) => r.nextInt(255)));
SecurityContext securityContext = new SecurityContext();
HttpClient client = HttpClient(context: securityContext);
client.badCertificateCallback =
(X509Certificate cert, String host, int port) {
print('Allow self-signed certificate => $host:$port');
return true;
};
var params=url.substring(34);
debugPrint(params);
HttpClientRequest request = await client.getUrl(
Uri.parse('https://$host:$port?$params'));
debugPrint("Request"+request.toString());// form the correct url here
request.headers.add('Connection', 'Upgrade');
request.headers.add('Upgrade', 'websocket');
request.headers.add('Sec-WebSocket-Version', '13'); // insert the correct version here
request.headers.add('Sec-WebSocket-Key', key.toLowerCase());
HttpClientResponse response = await request.close();
debugPrint("detachSocket Url"+response.toString());
debugPrint("detachSocket Url"+response.statusCode.toString());
if(response.statusCode==200)
{
debugPrint(response.toString());
}
Socket socket = await response.detachSocket();
var webSocket = WebSocket.fromUpgradedSocket(
socket,
protocol: 'signaling',
serverSide: false,
);
socket.close();
return webSocket;
} catch (e) {
throw e;
}
}