SignalR Nedir?

Bu yazımda “SignalR nedir?”, “Neden Kullanılır?” sorularının yanıtlarını arayacağız. SignalR, gerçek zamanlı web uygulamaları için bir kütüphanedir. Bu kütüphane, web sunucusu ve istemcisine birer soket bağlantısı sağlar ve bu sayede sunucu ve istemci arasında gerçek zamanlı iletişim sağlanır. SignalR, JavaScript, .NET ve [ASP.NET](http://asp.net/) ile çalışabilen bir kütüphanedir.

SignalR, sunucu ve istemci arasındaki mesajlaşmayı kolaylaştırmak için birkaç farklı yöntem sunar. Bu yöntemler arasında WebSocket, Server-Sent Events (SSE) ve Long Polling bulunur. SignalR, WebSocket ve SSE gibi teknolojileri destekleyen tarayıcılarda bu protokoller kullanarak gerçek zamanlı veri gönderimi sağlar. Diğer tarayıcılarda ise Long Polling kullanarak veri gönderimi sağlanır.

SignalR, aynı anda birden fazla istemciye mesaj gönderimi yapabilir. Bu mesajlar, sunucuya bağlı tüm istemcilere eş zamanlı olarak gönderilebilir.

SignalR Nasıl Kullanılır?

SignalR’ı kullanmak için öncelikle bir sunucu ve bir istemci tarafı oluşturmanız gerekir. Sunucu tarafında, SignalR’ı yapılandırmak ve mesajları ele almak için özel bir hub sınıfı oluşturmanız gerekir. İstemci tarafında ise, SignalR istemcisi oluşturmanız ve sunucu tarafındaki hub sınıfına bağlanmanız gerekir.

Sunucu tarafında, SignalR’ı yapılandırmak için Startup.cs dosyasına aşağıdaki kodu ekleyebilirsiniz:


public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<MyHub>("/myhub");
    });
}

Bu kod, SignalR’ı yapılandırmak için gerekli olan servisleri ve hub’ı ekler.

Hub sınıfı oluşturmak için aşağıdaki kodu kullanabilirsiniz:


public class MyHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}

Bu kod, `SendMessage` adında bir metod oluşturur. Bu metod, `user` ve `message` parametrelerini alır ve tüm istemcilere `ReceiveMessage` adında bir metod çağrısı yaparak bu parametreleri gönderir.

İstemci tarafında, SignalR istemcisini kullanmak için aşağıdaki kodu ekleyebilirsiniz:

var connection = new signalR.HubConnectionBuilder().withUrl("/myhub").build();

connection.on("ReceiveMessage", function (user, message) {
    // message handling logic here
});

connection.start().then(function () {
    connection.invoke("SendMessage", user, message).catch(function (err) {
        console.error(err.toString());
    });
}).catch(function (err) {
    console.error(err.toString());
});

Bu kod, SignalR istemcisini yapılandırmak için gerekli olan `HubConnectionBuilder` sınıfını kullanır. `connection.on` metodu, sunucudan gelen mesajları ele almak için kullanılır. `connection.start` metodu, istemcinin sunucuyla bağlantı kurmasını sağlar. `connection.invoke` metodu ise, sunucuya mesaj göndermek için kullanılır.

SignalR, güçlü bir kütüphane olduğundan gerçek zamanlı web uygulamaları için kullanılabilir. Web uygulamaları, sunucu ve istemci arasındaki gerçek zamanlı iletişimi kolaylaştırmak için SignalR kullanarak daha interaktif ve kullanıcı dostu hale getirebilirler. Gerçek zamanlı veri gönderimi için WebSocket, SSE ve Long Polling gibi teknolojiler kullanılarak SignalR destekleyebilir. Böylece, performans ve kullanıcı deneyimi artırılabilir.

Detaylı bilgi için buradan Microsoft dokümantasyonuna ulaşabilirsiniz.

Emrah Eroğlu

Microsoft Power Platform - Dynamics 365 CE Developer - Solutions Architect

You may also like...

1 Response

  1. 2023-05-03

    […] geliştirdiği SignalR yazımı buradan […]

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir