Here are the examples of the csharp api System.Action.Invoke(WebSocketClientOptions) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
1 Examples
19
Source : WebSocketProxyMiddleware.cs
with Apache License 2.0
from ProxyKit
with Apache License 2.0
from ProxyKit
private async Task AcceptProxyWebSocketRequest(HttpContext context, Uri upstreamUri)
{
using (var client = new ClientWebSocket())
{
foreach (var protocol in context.WebSockets.WebSocketRequestedProtocols)
{
client.Options.AddSubProtocol(protocol);
}
foreach (var headerEntry in context.Request.Headers)
{
if (!NotForwardedWebSocketHeaders.Contains(headerEntry.Key))
{
client.Options.SetRequestHeader(headerEntry.Key, headerEntry.Value);
}
}
if (_options.WebSocketKeepAliveInterval.HasValue)
{
client.Options.KeepAliveInterval = _options.WebSocketKeepAliveInterval.Value;
}
_customizeWebSocketClient(new WebSocketClientOptions(client.Options, context));
try
{
await client.ConnectAsync(upstreamUri, context.RequestAborted).ConfigureAwait(false);
}
catch (WebSocketException ex)
{
context.Response.StatusCode = 400;
_logger.LogError(ex, "Error connecting to server");
return;
}
using (var server = await context.WebSockets.AcceptWebSocketAsync(client.SubProtocol).ConfigureAwait(false))
{
var bufferSize = _options.WebSocketBufferSize ?? DefaultWebSocketBufferSize;
await Task.WhenAll(
PumpWebSocket(client, server, bufferSize, context.RequestAborted),
PumpWebSocket(server, client, bufferSize, context.RequestAborted)).ConfigureAwait(false);
}
}
}