[HttpGet("/ws")]
public async Task Get()
{
try
{
if (HttpContext.WebSockets.IsWebSocketRequest)
{
if (HttpContext.Request.Headers.TryGetValue("Authorization", out var authHeaderValue))
{
Console.WriteLine("Authorization value :" + authHeaderValue);
}
using var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync();
var buffer = new byte[1024 * 4];
var result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
while (!result.CloseStatus.HasValue)
{
var requestValue = $"{Encoding.UTF8.GetString(buffer, 0, result.Count)}";
if (requestValue.Equals("Get-Print-Job"))
{
var serverMessage = "Hi Client!";
var serverMsg = Encoding.UTF8.GetBytes($"{serverMessage}");
await webSocket.SendAsync(new ArraySegment<byte>(serverMsg, 0, serverMsg.Length), result.MessageType, result.EndOfMessage, CancellationToken.None);
}
else
{
var errorMessge = "Error!";
var errorMessgeByte = Encoding.UTF8.GetBytes($"{errorMessge}");
await webSocket.SendAsync(new ArraySegment<byte>(errorMessgeByte, 0, errorMessgeByte.Length), result.MessageType, result.EndOfMessage, CancellationToken.None);
}
buffer = new byte[1024 * 4];
result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
}
await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
}
else
{
HttpContext.Response.StatusCode = 400;
}
}
catch (Exception ex)
{
HttpContext.Response.StatusCode = 500;
}
}