PingmanTools/System.Net.WebSockets.Client.Managed

How should we set ClientWebSocket options?

kblok opened this issue · 1 comments

kblok commented

I bet CreateClientWebSocket returns a WebSocket because both Managed.ClientWebSocket and ClientWebSocket inherits from WebSocket.

The problem is that it hides the Options property. If I want to set the KeepAliveInterval should I do something like this?

var client = SystemClientWebSocket.CreateClientWebSocket();
if (client is System.Net.WebSockets.Managed.ClientWebSocket managed)
{
    managed.Options.KeepAliveInterval = TimeSpan.FromSeconds(0);
    await managed.ConnectAsync(uri, cancellationToken);
}
else
{
    var coreSocket = client as ClientWebSocket;
    coreSocket.Options.KeepAliveInterval = TimeSpan.FromSeconds(0);
    await coreSocket.ConnectAsync(uri, cancellationToken);
}

If think one option would be passing the Options as an argument to the ConnectAsync method.

Alternatively, a helper function in the form of SystemClientWebSocket.SetKeepAliveInterval(WebSocket ws, TimeSpan interval) would be helpful too...