public async Task ConnectAsync(CancellationToken cancellationToken) { var uri = _options.Uri; if (!uri.StartsWith("ws://", StringComparison.OrdinalIgnoreCase) && !uri.StartsWith("wss://", StringComparison.OrdinalIgnoreCase)) { if (_options.TlsOptions?.UseTls == false) { uri = "ws://" + uri; } else { uri = "wss://" + uri; } } var clientWebSocket = new WasmWebSocket(); //if (_options.ProxyOptions != null) //{ // clientWebSocket.Options.Proxy = CreateProxy(); //} //if (_options.RequestHeaders != null) //{ // foreach (var requestHeader in _options.RequestHeaders) // { // clientWebSocket.Options.SetRequestHeader(requestHeader.Key, requestHeader.Value); // } //} //if (_options.SubProtocols != null) //{ // foreach (var subProtocol in _options.SubProtocols) // { // clientWebSocket.Options.AddSubProtocol(subProtocol); // } //} //if (_options.CookieContainer != null) //{ // clientWebSocket.Options.Cookies = _options.CookieContainer; //} //if (_options.TlsOptions?.UseTls == true && _options.TlsOptions?.Certificates != null) //{ // clientWebSocket.Options.ClientCertificates = new X509CertificateCollection(); // foreach (var certificate in _options.TlsOptions.Certificates) // { // clientWebSocket.Options.ClientCertificates.Add(new X509Certificate(certificate)); // } //} await clientWebSocket.ConnectAsync(new Uri(uri), cancellationToken).ConfigureAwait(false); _webSocket = clientWebSocket; IsSecureConnection = uri.StartsWith("wss://", StringComparison.OrdinalIgnoreCase); }
public WasmMqttWebSocketChannel(WasmWebSocket webSocket, string endpoint, bool isSecureConnection, X509Certificate2 clientCertificate) { _webSocket = webSocket ?? throw new ArgumentNullException(nameof(webSocket)); Endpoint = endpoint; IsSecureConnection = isSecureConnection; ClientCertificate = clientCertificate; }
public void Dispose() { _sendLock?.Dispose(); _sendLock = null; try { _webSocket?.Dispose(); } catch (ObjectDisposedException) { } finally { _webSocket = null; } }