Javascript ile .Net core ile yazılan websocket'e headerla beraber mesaj göndermek.

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Onaylı Üye
Katılım
8 Eki 2017
Mesajlar
134
Tepki puanı
12
Ödüller
5
8 HİZMET YILI
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;

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
 
Onaylı Üye
Katılım
19 Nis 2019
Mesajlar
51
Tepki puanı
2
Ödüller
5
Yaş
31
7 HİZMET YILI
Bilen kişiler yardımcı olursa çok sevinirim .
Post automatically merged:

Fakat şu an ki programda hedef kitle olarak göremiyorum sayıyı .
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst