Merhabalar, .Net core ile bir web socket yazdım. Endpoint'e HttpContext.WebSockets.IsWebSocketRequest isteği geldiyse websocket olarak işlem görüyor.
Javascript ile bu yazdığım websocket'e bağlanamıyorum. Bağlansam da header verisi gönderemiyorum. Postman üzerinden header gönderip çaıştırabiliyorum fakat hiç bir javascript kütüphanesi ile header ile bağlanamadım. Neredeyse çoğu kütüphaneyi denedim ama bir türli yapamadım.
.Net core ile yazdığım websocket kodlarım;
Örnek bağlantı sağladığım websocket adresi: wss://localhost:5000/ws
Javascript ile bu yazdığım websocket'e bağlanamıyorum. Bağlansam da header verisi gönderemiyorum. Postman üzerinden header gönderip çaıştırabiliyorum fakat hiç bir javascript kütüphanesi ile header ile bağlanamadım. Neredeyse çoğu kütüphaneyi denedim ama bir türli yapamadım.
.Net core ile yazdığım websocket kodlarım;
C#:
[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;
}
}
Örnek bağlantı sağladığım websocket adresi: wss://localhost:5000/ws