Günümüzde web uygulamaları, kullanıcıların gerçek zamanlı verilerle etkileşimde bulunmasını sağlamak için sürekli olarak gelişmektedir. **ASP.NET**, .NET ekosisteminin sunduğu güçlü bir platformdur ve gerçek zamanlı uygulamalar geliştirmek için çeşitli araçlar ve kütüphaneler sunar. Bu yazıda, **SignalR** kütüphanesini kullanarak ASP.NET ile nasıl gerçek zamanlı veri akışı oluşturabileceğimizi göreceğiz.
SignalR Nedir?
SignalR, ASP.NET için bir kütüphanedir ve web uygulamalarında gerçek zamanlı işbirliğini ve iletişimi kolaylaştırır. Teknik olarak, web tarayıcıları ile sunucu arasında çift yönlü iletişim sağlar. SignalR, SPA (Single Page Application) ve diğer web tabanlı uygulamalarda yoğun bir şekilde kullanılır.
Projenin Hazırlanması
Gerçek zamanlı veri akışı oluşturmak için şu adımları izleyelim:
1. **Yeni bir ASP.NET Core Projesi Oluşturun**
Visual Studio’da yeni bir ASP.NET Core Web Uygulaması oluşturun ve proje türü olarak “Web Uygulaması (Model-View-Controller)” seçeneğini seçin.
2. **SignalR Kütüphanesini Yükleyin**
Projenize SignalR eklemek için NuGet Paket Yöneticisi'nden şu komutu çalıştırın:
Kod:
Install-Package Microsoft.AspNetCore.SignalRSignalR ile sunucu ve istemciler arasında iletişim kurmak için bir Hub oluşturmalısınız. Aşağıdaki kod örneğinde, basit bir Hub oluşturuyoruz:
Kod:
using Microsoft.AspNetCore.SignalR;
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}SignalR'ı kullanabilmek için **Startup.cs** dosyanızı güncelleyerek Hub'ınızı kaydetmelisiniz. İşte gerekli kod:
Kod:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapHub<ChatHub>("/chathub");
});
}Artık istemci tarafında SignalR ile haberleşmek için gerekli JavaScript kodunu ekleyelim. `index.html` veya ilgili bir Razor sayfasında şu kodu ekleyin:
Kod:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft.signalr/3.1.0/signalr.min.js"></script>
<script>
const connection = new signalR.HubConnectionBuilder()
.withUrl("/chathub")
.build();
connection.on("ReceiveMessage", function(user, message) {
const msg = user + ": " + message;
const li = document.createElement("li");
li.textContent = msg;
document.getElementById("messagesList").appendChild(li);
});
connection.start().catch(function (err) {
return console.error(err.toString());
});
document.getElementById("sendButton").addEventListener("click", function (event) {
const user = document.getElementById("userInput").value;
const message = document.getElementById("messageInput").value;
connection.invoke("SendMessage", user, message).catch(function (err) {
return console.error(err.toString());
});
event.preventDefault();
});
</script>İstemci HTML yapısını aşağıdaki gibi oluşturun:
Kod:
<div>
<input id="userInput" type="text" placeholder="Kullanıcı Adı" />
<input id="messageInput" type="text" placeholder="Mesaj" />
<button id="sendButton">Gönder</button>
</div>
<ul id="messagesList"></ul>Tüm bu adımları tamamladıktan sonra, kullanıcılarınız artık gerçek zamanlı olarak birbirleriyle iletişim kurabilir. SignalR ile ASP.NET kullanarak kolayca çok sayıda gerçek zamanlı uygulama geliştirebilirsiniz.
Gerçek zamanlı uygulamalar, kullanıcı deneyimini artırdığı gibi uygulamanızın etkileşimini de önemli ölçüde artırır. Hızla etkileşimde bulunabilen ve sürekli güncellenen bir arayüz, modern uygulama dünyasında büyük bir avantaj sağlamaktadır.
Eğer daha fazla bilgi almak veya projelerinizde ASP.NET kullanarak geliştirici topluluğuna katılmak isterseniz, forumlar ve online kaynaklar oldukça faydalı olabilir. Unutmayın, ASP.NET ile sınırsız olanaklar sizi bekliyor!
)

