PingmanTools / System.Net.WebSockets.Client.Managed

Microsoft's managed implementation of System.Net.WebSockets.ClientWebSocket tweaked for use on Windows 7 and .NET 4.5
MIT License
45 stars 14 forks source link

How should we set ClientWebSocket options? #8

Open kblok opened 5 years ago

kblok commented 5 years ago

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.

martonb commented 2 years ago

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