برنامه نویسی

نحوه پیاده‌سازی ارتباطات بلادرنگ در NET 8 Minimal API با استفاده از SignalR: راهنمای گام به گام

همانطور که کاربردهای مدرن همچنان در حال تکامل هستند، ارتباط بلادرنگ به یک ویژگی حیاتی برای افزایش تجربه کاربر تبدیل شده است. خواه اعلان‌های زنده، ابزارهای مشارکتی یا به‌روزرسانی‌های زنده در داشبورد، SignalR ترکیب شده با حداقل API ها در NET 8 یک راه ساده و کارآمد برای پیاده سازی عملکرد بلادرنگ ارائه می دهد.

در این پست وبلاگ، نحوه ادغام را بررسی خواهیم کرد SignalR با حداقل API ها در NET 8 برای فعال کردن ارتباط بلادرنگ در برنامه شما.


SignalR چیست؟

SignalR کتابخانه ای است که امکان پذیر است قابلیت وب در زمان واقعی در برنامه های NET. این به کد سمت سرور اجازه می دهد تا به روز رسانی ها را فوراً به مشتریان ارسال کند. SignalR از روش های مختلف انتقال پشتیبانی می کند، از جمله وب سوکت ها، رویدادهای ارسال شده توسط سرور، و نظرسنجی طولانیبسته به قابلیت های کلاینت و سرور.

برخی از موارد استفاده معمولی برای SignalR عبارتند از:

  • برنامه های چت زنده
  • اعلان های زمان واقعی
  • ویرایش اسناد مشارکتی
  • داشبوردهای تعاملی که در زمان واقعی به روز می شوند

1. راه اندازی یک API حداقل با SignalR

برای شروع، اجازه دهید ابتدا a ایجاد کنیم حداقل API پروژه در NET 8 و ادغام SignalR برای ارتباطات بلادرنگ.

مرحله 1: بسته SignalR را نصب کنید

در پروژه NET 8 خود، نصب کنید Microsoft.AspNetCore.SignalR بسته از طریق NuGet:

dotnet add package Microsoft.AspNetCore.SignalR
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 2: یک هاب برای ارتباطات بلادرنگ تعریف کنید

الف هاب یک کلاس در SignalR است که به عنوان یک خط لوله سطح بالا عمل می کند و به سرور اجازه می دهد با مشتریان ارتباط برقرار کند. بیایید یک هاب ساده برای ارسال پیام تعریف کنیم.

public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

را SendMessage متد پیام را از طریق به همه مشتریان متصل پخش می کند Clients.All.SendAsync روش

مرحله 3: SignalR را در Program.cs پیکربندی کنید

بعد، میان افزار SignalR را در خود پیکربندی کنید حداقل API پروژه می توانید یک هاب SignalR به آن اضافه کنید Program.cs با ثبت آن به عنوان بخشی از خط لوله درخواست برنامه.

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

// Add SignalR middleware
app.MapHub<ChatHub>("/chathub");

app.Run();
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این امر الف را آشکار می کند /chathub نقطه پایانی که مشتریان می توانند برای ارتباط بلادرنگ به آن متصل شوند.


2. ایجاد یک کلاینت برای اتصال به SignalR Hub

SignalR از انواع مختلف کلاینت پشتیبانی می کند، از جمله جاوا اسکریپت، دات نت، و جاوا. برای سادگی، اجازه دهید یک را ایجاد کنیم کلاینت جاوا اسکریپت برای اتصال به SignalR هاب ما.

مرحله 1: کتابخانه مشتری SignalR را اضافه کنید

برای اتصال به هاب SignalR از قسمت جلویی، کتابخانه جاوا اسکریپت SignalR را در برنامه مشتری خود قرار دهید. می توانید آن را با استفاده از CDN یا از طریق npm نصب کنید:

"https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/7.0.0/signalr.min.js">
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله ۲: به هاب وصل شوید و پیام‌ها را مدیریت کنید

در اینجا مثالی از نحوه اتصال به هاب SignalR و ارسال/دریافت پیام با استفاده از جاوا اسکریپت آورده شده است:

"text/javascript">
    const connection = new signalR.HubConnectionBuilder()
        .withUrl("/chathub")
        .build();

    // Start the connection
    connection.start().then(() => {
        console.log("Connected to SignalR");
    }).catch(err => console.error(err));

    // Send message to the hub
    document.getElementById("sendButton").addEventListener("click", function () {
        const user = document.getElementById("userInput").value;
        const message = document.getElementById("messageInput").value;
        connection.invoke("SendMessage", user, message).catch(err => console.error(err));
    });

    // Receive messages from the hub
    connection.on("ReceiveMessage", function (user, message) {
        const li = document.createElement("li");
        li.textContent = `${user}: ${message}`;
        document.getElementById("messagesList").appendChild(li);
    });

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این اسکریپت به /چاتوب نقطه پایانی، زمانی که کاربر روی دکمه ای کلیک می کند، پیامی ارسال می کند و به پیام های جدید پخش شده توسط سرور گوش می دهد.


3. افزایش SignalR با اعلان های زمان واقعی

اکنون که سیستم پیام رسانی اولیه را راه اندازی کرده ایم، بیایید ببینیم چگونه می توانید از SignalR برای اعلان های زمان واقعی. در بسیاری از برنامه‌ها، مانند داشبوردها یا ابزارهای مشارکتی، کاربران انتظار دارند که در صورت انجام اقدامات خاص، به‌روزرسانی‌های فوری انجام شود.

مثال: ارسال اعلان‌های بلادرنگ

سناریویی را تصور کنید که در آن برنامه شما باید هر زمان که سفارش جدیدی انجام می شود به کاربران اطلاع دهد. در اینجا نحوه پخش اعلان از پشتیبان با استفاده از SignalR آمده است.

public class NotificationHub : Hub
{
    public async Task SendOrderNotification(string orderId)
    {
        await Clients.All.SendAsync("ReceiveNotification", $"New order received: {orderId}");
    }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

شما می توانید این روش را از هر بخشی از برنامه خود فعال کنید، مانند پس از پردازش سفارش:

public async Task ProcessOrder(string orderId)
{
    // Process the order...

    // Notify clients
    var hubContext = app.Services.GetRequiredService<IHubContext<NotificationHub>>();
    await hubContext.Clients.All.SendAsync("ReceiveNotification", $"New order: {orderId}");
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در سمت کلاینت، می‌توانید به این اعلان‌ها گوش دهید و UI را در زمان واقعی به‌روزرسانی کنید.

"text/javascript">
    const connection = new signalR.HubConnectionBuilder()
        .withUrl("/notificationhub")
        .build();

    connection.start().then(() => {
        console.log("Connected to Notification Hub");
    }).catch(err => console.error(err));

    connection.on("ReceiveNotification", function (message) {
        alert(message);
    });

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


4. رسیدگی به قطع و وصل مجدد

یکی از چالش های ارتباطات بلادرنگ مدیریت قطعی شبکه یا قطع ارتباط مشتری است. SignalR عملکرد داخلی را برای مدیریت یکپارچه اتصالات مجدد ارائه می دهد.

مثال: اتصال مجدد خودکار در SignalR

در سرویس گیرنده جاوا اسکریپت، می توانید با افزودن، اتصالات مجدد خودکار را پیکربندی کنید .withAutomaticReconnect() به HubConnectionBuilder.

const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chathub")
    .withAutomaticReconnect()
    .build();

connection.onreconnecting((error) => {
    console.log(`Connection lost: ${error}. Trying to reconnect...`);
});

connection.onreconnected(() => {
    console.log("Reconnected to SignalR");
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این تضمین می‌کند که در صورت قطع شدن اتصال، برنامه شما تلاش می‌کند دوباره وصل شود و تجربه کلی کاربر را در هنگام ناپایداری شبکه بهبود می‌بخشد.


5. ایمن سازی SignalR Hub

امنیت در ارتباطات بلادرنگ بسیار مهم است، به‌ویژه زمانی که با داده‌های حساس سروکار داریم. با پیاده سازی می توانید هاب های SignalR را ایمن کنید احراز هویت و مجوز با استفاده از توکن های JWT یا سایر روش های احراز هویت

مثال: ایمن سازی SignalR با JWT

ابتدا سرور SignalR خود را برای استفاده از احراز هویت JWT پیکربندی کنید:

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            // Add your token validation logic here
        };
    });

app.MapHub<ChatHub>("/chathub").RequireAuthorization();
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

سپس، در سمت مشتری، هنگام اتصال به هاب، توکن JWT را وصل کنید:

const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chathub", { accessTokenFactory: () => localStorage.getItem("jwtToken") })
    .build();
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این تضمین می کند که فقط کاربران احراز هویت شده می توانند به هاب دسترسی داشته باشند و امنیت ارتباطات بلادرنگ شما را افزایش می دهد.


نتیجه گیری

با ادغام SignalR با حداقل API ها در NET 8، می توانید به راحتی ویژگی های ارتباطی قدرتمند در زمان واقعی را در برنامه خود ایجاد کنید. چه در حال ساختن سیستم‌های چت زنده، خدمات اعلان یا داشبوردهای تعاملی باشید، SignalR ارائه به‌روزرسانی‌های فوری به کاربران را ساده می‌کند.

در این پست به نحوه انجام موارد زیر پرداختیم:

  • با استفاده از SignalR یک سیستم پیام رسانی بلادرنگ راه اندازی کنید.
  • یک کلاینت جاوا اسکریپت برای ارتباط با هاب بسازید.
  • اعلان های بلادرنگ را برای کاربران پیاده سازی کنید.
  • اتصالات مجدد را مدیریت کنید و اطمینان حاصل کنید که سیستم در برابر خطا مقاوم است.
  • هاب های SignalR را با احراز هویت ایمن کنید.

ارتباطات بی‌درنگ می‌تواند تجربه کاربر را تا حد زیادی بهبود بخشد، و با حداقل ساختار API و SignalR دات نت 8، شما راهی ساده برای پیاده‌سازی این عملکرد دارید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا