SignalR چیست؟
کتابخانه ASP.NET Core برای ارتباط بلادرنگ (Real-Time) بین سرور و کلاینت — چت، اعلان زنده، بهروزرسانی Dashboard بدون Refresh صفحه.
چرا مهم است؟
برای هر ویژگیای که نیاز به ارسال داده از سرور به کلاینت بدون درخواست صریح او دارد (چت، اعلان، وضعیت زنده سفارش)، SignalR پیچیدگی مدیریت WebSocket را از دوش توسعهدهنده برمیدارد.
تعریف
SignalR یک لایه انتزاعی روی WebSocket (با Fallback خودکار به Server-Sent Events یا Long Polling در صورت نبود پشتیبانی) است که امکان فراخوانی متد از سرور روی کلاینت (و برعکس) را میدهد.
مثال (سمت سرور — Hub)
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message) =>
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
// Program.cs
app.MapHub<ChatHub>("/chathub");
// سمت کلاینت (JavaScript)
connection.on("ReceiveMessage", (user, message) => {
console.log(`${user}: ${message}`);
});
قابلیتهای کلیدی
- Group: ارسال پیام فقط به زیرمجموعهای از کلاینتها (مثلاً یک اتاق چت).
- Auto-Reconnect: مدیریت خودکار قطع و وصل مجدد اتصال.
اشتباه رایج
❌ استفاده از SignalR برای هر نوع بهروزرسانی، حتی دادهای که هر چند دقیقه یکبار کافی است (مثل آمار روزانه) — نگهداری اتصال دائمی WebSocket برای هزاران کاربر هزینه منابع سرور دارد؛ برای داده کمتغییر، Polling دورهای سادهتر و کافی است.
منبع و مطالعه بیشتر
خلاصه
SignalR روی WebSocket ارتباط بلادرنگ بین سرور و کلاینت میسازد، با Auto-Reconnect و پشتیبانی Group. فقط برای دادهای که واقعاً نیاز به بهروزرسانی زنده دارد استفاده کنید، نه هر نوع داده. مرجع کامل: مستندات SignalR، Microsoft Learn.
