tgoop.com/dotnetcode/3075
Create:
Last Update:
Last Update:
قسمت ۳ : پشتیبانی داخلی از (SSE) Server-Sent Events
اغلب وقتی میخوایم دیتای زنده از سرور به کلاینت بفرستیم (مثل نوتیفیکیشن، قیمت لحظهای ارز یا وضعیت یه پردازش طولانی)، اولین فکرمون میره سراغ WebSockets.
اما WebSockets یه پروتکل دوطرفه و پیچیدهست. خیلی وقتها ما فقط نیاز داریم سرور یکطرفه به کلاینت دیتا «پوش» کنه.
اینجا SSE (Server-Sent Events) وارد میشه. SSE بر پایه HTTP کار میکنه، سبکه و پیادهسازیش خیلی سادهتره.
در ASP.NET Core 10، پشتیبانی از SSE داخلی شده:
مثال (سمت سرور - C#):
app.MapGet("/live-clock", async (HttpContext context, CancellationToken ct) =>
{
// به مرورگر میگیم که این یه استریم SSE هست
await context.Response.WriteSseHeadersAsync(ct);
// یه حلقه که هر ثانیه، زمان سرور رو برای کلاینت میفرسته
while (!ct.IsCancellationRequested)
DRAFT:
{
// یه "ایونت" به اسم 'timeUpdate' میفرستیم
await context.Response.WriteSseEventAsync(
"timeUpdate", // اسم ایونت
$"ساعت سرور: {DateTime.Now:T}", // دیتا
ct);
await Task.Delay(1000, ct); // ۱ ثانیه صبر کن
}
});
مثال (سمت کلاینت - JavaScript):
// به همین سادگی به سرور وصل میشیم
const eventSource = new EventSource("/live-clock");
// به ایونت 'timeUpdate' گوش میدیم
eventSource.addEventListener("timeUpdate", (event) => {
console.log(event.data);
// خروجی: "ساعت سرور: 14:30:01"
// خروجی: "ساعت سرور: 14:30:02"
// ...
});📚💻 @dotnetcode

