aspnetcore/test/Microsoft.AspNetCore.Socket.../TestWebSocketConnectionFeat...

36 lines
1.2 KiB
C#

using System;
using System.Buffers;
using System.IO.Pipelines;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.WebSockets.Internal;
using Microsoft.Extensions.WebSockets.Internal;
namespace Microsoft.AspNetCore.Sockets.Tests
{
internal class TestWebSocketConnectionFeature : IHttpWebSocketConnectionFeature, IDisposable
{
private PipeFactory _factory = new PipeFactory(BufferPool.Default);
public bool IsWebSocketRequest => true;
public WebSocketConnection Client { get; private set; }
public ValueTask<IWebSocketConnection> AcceptWebSocketConnectionAsync(WebSocketAcceptContext context)
{
var clientToServer = _factory.Create();
var serverToClient = _factory.Create();
var clientSocket = new WebSocketConnection(serverToClient.Reader, clientToServer.Writer);
var serverSocket = new WebSocketConnection(clientToServer.Reader, serverToClient.Writer);
Client = clientSocket;
return new ValueTask<IWebSocketConnection>(serverSocket);
}
public void Dispose()
{
_factory.Dispose();
}
}
}