36 lines
1.2 KiB
C#
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();
|
|
}
|
|
}
|
|
} |