SignalR হলো ASP.NET Core-এর একটি লাইব্রেরি যা রিয়েল-টাইম ওয়েব অ্যাপ্লিকেশন তৈরি করার জন্য ব্যবহৃত হয়। এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে রিয়েল-টাইম যোগাযোগের সুবিধা প্রদান করে। SignalR-এর সাহায্যে, ডেটা বা মেসেজ রিয়েল-টাইমে ক্লায়েন্টের কাছে পাঠানো সম্ভব হয়, যার ফলে ক্লায়েন্ট এবং সার্ভারের মধ্যে দ্রুত এবং ইন্টারঅ্যাকটিভ কমিউনিকেশন তৈরি করা যায়।
SignalR খুবই শক্তিশালী এবং বিভিন্ন ধরনের অ্যাপ্লিকেশনে ব্যবহার করা যেতে পারে, যেমন:
SignalR ক্লায়েন্ট এবং সার্ভারের মধ্যে একটি persistent connection তৈরি করে, যা উভয় পক্ষকে ডেটা পাঠানোর বা গ্রহণ করার ক্ষমতা প্রদান করে। সার্ভার যখন কোনো পরিবর্তন ঘটে তখন তা ক্লায়েন্টকে অবহিত করে, এবং ক্লায়েন্ট সেই পরিবর্তন রিয়েল-টাইমে দেখতে পায়। এটি WebSocket, Server-Sent Events (SSE), এবং Long Polling এর মতো প্রযুক্তির উপর ভিত্তি করে কাজ করে। SignalR স্বয়ংক্রিয়ভাবে সর্বোত্তম প্রযুক্তি নির্বাচন করে, যেটি ক্লায়েন্টের ব্রাউজার বা পরিবেশে উপযুক্ত।
SignalR হাব তৈরি করতে, প্রথমে একটি ক্লাস তৈরি করতে হবে যা Hub
থেকে ইনহেরিট করবে। এই ক্লাসটি ক্লায়েন্ট এবং সার্ভারের মধ্যে মেসেজ আদান-প্রদানের জন্য ব্যবহৃত হবে।
Hub ক্লাস (C#):
using Microsoft.AspNetCore.SignalR;
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
এখানে:
ChatHub
হলো একটি SignalR Hub ক্লাস।SendMessage
মেথড ব্যবহারকারীদের পাঠানো মেসেজ সবার কাছে পাঠাবে। Clients.All.SendAsync
ক্লায়েন্টদের কাছে মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।ReceiveMessage
হলো ক্লায়েন্ট সাইডে একটি মেথড যা মেসেজ গ্রহণ করবে।SignalR হাবটি কনফিগার করার জন্য, Startup.cs ফাইলে SignalR সেটআপ করতে হবে।
public void ConfigureServices(IServiceCollection services)
{
services.AddSignalR();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ChatHub>("/chathub");
});
}
এখানে, MapHub
মেথড ব্যবহার করে হাবটি সার্ভারে রুট করতে হবে।
SignalR ক্লায়েন্ট সাইডে JavaScript ব্যবহার করে হাবের সাথে সংযুক্ত হতে হয় এবং মেসেজ গ্রহণ করতে হয়।
JavaScript:
const connection = new signalR.HubConnectionBuilder()
.withUrl("/chathub")
.build();
connection.on("ReceiveMessage", function (user, message) {
const msg = user + ": " + message;
document.getElementById("messagesList").innerHTML += "<li>" + msg + "</li>";
});
connection.start().catch(function (err) {
return console.error(err.toString());
});
function sendMessage() {
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());
});
}
এখানে:
signalR.HubConnectionBuilder()
ব্যবহার করে SignalR হাবের সাথে সংযোগ তৈরি করা হয়।connection.on
মেথড ব্যবহার করে ReceiveMessage নামক ইভেন্টের জন্য একটি হ্যান্ডলার তৈরি করা হয়, যা মেসেজ গ্রহণ করবে।connection.invoke
মেথড ব্যবহার করে মেসেজ সার্ভারে পাঠানো হয়।<div>
<input type="text" id="userInput" placeholder="Enter your name" />
<input type="text" id="messageInput" placeholder="Enter your message" />
<button onclick="sendMessage()">Send</button>
</div>
<ul id="messagesList"></ul>
SignalR একটি শক্তিশালী লাইব্রেরি যা ASP.NET Core অ্যাপ্লিকেশনগুলিতে রিয়েল-টাইম যোগাযোগ সহজ করে তোলে। এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে দ্রুত, ইন্টারঅ্যাকটিভ ডেটা আদান-প্রদান করার জন্য ব্যবহার করা হয় এবং এটি ওয়েব অ্যাপ্লিকেশনগুলির মধ্যে একে অপরের সাথে যোগাযোগের অভিজ্ঞতা বৃদ্ধি করে। SignalR এর সাহায্যে ক্লায়েন্টদের সাথে সরাসরি যোগাযোগ করে রিয়েল-টাইম ফিচার যেমন চ্যাট, লাইভ নোটিফিকেশন, এবং স্ট্রিমিং সেবা প্রদান করা যেতে পারে।
common.read_more