WebSocket可以选择向请求添加标题,但您无法向其添加SecurityContext。 SecureSocket具有SecurityContext,因此我可以添加ssl证书但不能添加标头。对此有何想法?
更新 我试图用SecurityContext对象创建一个websocket 因为我无法访问基础HttpClient,所以我试图使用 runZoned方法
int i = 0;
socket = await io.HttpOverrides.runZoned<Future<io.WebSocket>>(
() => io.WebSocket.connect(uri, headers: headers),
createHttpClient: (io.SecurityContext securityContext) {
log.w('creating HttpClient ${i++}');
return new io.HttpClient(context: options.securityContext);
},
);
createHttpClient被调用大约3550次 然后没有任何事情发生
它应该非常简单,因为websocket httpclient就在那里
答案 0 :(得分:0)
解决方案是传递SecureSocket
以创建WebSocket
。
示例:
SecureSocket socket = await SecureSocket.connect("host", port);
WebSocket ws = new WebSocket.fromUpgradedSocket(socket);
希望有所帮助!
答案 1 :(得分:0)
尝试
class MyHttpOverrides extends HttpOverrides {
@override
HttpClient createHttpClient(SecurityContext context) {
return super.createHttpClient(context)
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
}
}
// Run this code in main function
HttpOverrides.global = new MyHttpOverrides();