Middle
SignalR nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
SignalR, ASP.NET Core için WebSocket ve Long Polling işlevselliği eklemeye olanak tanıyan bir kütüphanedir ve gerçek zamanlı etkileşimli senaryolar oluşturmak için web uygulamalarında kullanılır.
Sunucu ile istemci arasında çift yönlü iletişim sağlar.
Ana kullanım senaryoları:
- Sohbet uygulamaları.
- Çevrimiçi oyunlar.
- Gerçek zamanlı veri güncellemeleri (örneğin, grafikler, bildirimler).
- Kullanıcı etkinliğinin izlenmesi.
Ana bileşenler:
- Hub'lar: Gelen çağrıları işleyen ve mesajlar gönderen sınıflar.
- Bağlantılar: İstemci bağlantılarını temsil eder. WebSocket, Server-Sent Events veya Long Polling aracılığıyla kurulabilir (istemci ve sunucu desteğine bağlı olarak).
Bir hub oluşturma örneği:
// MyHub.cs
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;
public class MyHub : Hub
{
// İstemci tarafından çağrılabilecek metod
public async Task SendMessage(string user, string message)
{
// Tüm bağlı istemcilere mesaj gönder
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
Startup.cs içindeki yapılandırma:
// ConfigureServices içinde
services.AddSignalR();
// Configure içinde
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<MyHub>("/myhub"); // Hub'un URL ile eşlenmesi
});
İstemci tarafında (JavaScript):
// npm ile seçenek
// npm install @microsoft/signalr
const hubConnection = new signalR.HubConnectionBuilder()
.withUrl("/myhub") // Hub URL
.build();
// Sunucudan gelen mesajları işleme
hubConnection.on("ReceiveMessage", (user, message) => {
// Mesajı işleme mantığı
console.log(`${user}: ${message}`);
});
// Bağlantıyı açma
hubConnection.start()
.then(() => console.log("Bağlantı başlatıldı"))
.catch(err => console.error(err.toString()));
// Sunucuya mesaj gönderme
// hubConnection.invoke("SendMessage", "Müşteri", "Müşteriden merhaba!");
SignalR, istemci ve sunucu yeteneklerine göre otomatik olarak en uygun taşıyıcıyı seçer, WebSocket ile başlar ve gerekirse daha eski protokollere geçer. Bu, geniş uyumluluk sağlar.