🕒 Đăng ngày: 11/07/2025 | Lượt xem: 25
1. Giới thiệu chung
1.1. Server-Sent Events (SSE)
SSE là một kỹ thuật 1 chiều cho phép server gửi dữ liệu liên tục về client thông qua HTTP, sử dụng header text/event-stream.
- Giao thức: HTTP (long-lived connection)
- Giao tiếp: Chỉ từ server → client
- Hỗ trợ gốc: HTML5 (EventSource)
1.2. SignalR
SignalR là thư viện real-time 2 chiều của Microsoft, hỗ trợ nhiều cơ chế transport (WebSocket, Long Polling, Server-Sent Events...) với fallback tự động.
- Giao thức: WebSocket + fallback
- Giao tiếp: 2 chiều (full-duplex)
- Có thể dùng trong ASP.NET Core, Blazor, MAUI...
2. So sánh kỹ thuật chi tiết
| Tiêu chí | SSE | SignalR |
|---|---|---|
| Hướng dữ liệu | 1 chiều: Server → Client | 2 chiều: Client ↔ Server |
| Chuẩn giao thức | Chuẩn HTML5 (text/event-stream) | Không chuẩn cụ thể – thư viện độc quyền |
| Transport | HTTP/1.1 với EventSource | WebSocket (ưu tiên), fallback SSE hoặc Long Polling |
| Tương thích trình duyệt | Tốt (trừ IE cũ) | Cần polyfill hoặc fallback |
| Khả năng scale | Hạn chế (mỗi client = 1 connection) | Dễ mở rộng qua Azure SignalR, Redis backplane |
| Hiệu năng & tốc độ | Tốt cho broadcast, nhẹ | Tốt hơn khi dùng WebSocket |
| Dễ triển khai | Rất đơn giản | Cần thư viện + cấu hình |
| Hỗ trợ phân quyền & group | Không có sẵn | Có group, user, identity tích hợp |
| Khả năng reconnect | Có sẵn | Có sẵn, nâng cao hơn |
| Ứng dụng phù hợp | Cập nhật giá, feed, logs | Chat, game, họp trực tuyến, IoT |
3. Ưu điểm & Hạn chế
3.1. SSE
Ưu điểm:
- Cài đặt cực dễ (client dùng EventSource)
- Tiết kiệm tài nguyên server hơn so với polling
- Hoạt động tốt với HTTP/1.1 & reverse proxy
Hạn chế:
- Không hỗ trợ 2 chiều (client không gửi dữ liệu qua cùng connection)
- Không hoạt động tốt với load balancer không giữ kết nối lâu
- Không hỗ trợ binary (chỉ text)
3.2. SignalR
Ưu điểm:
- Hỗ trợ giao tiếp 2 chiều
- Dễ dùng trong .NET ecosystem
- Tích hợp nhóm người dùng, phân quyền, truyền object dễ dàng
- Tự động chọn protocol tối ưu
Hạn chế:
- Phụ thuộc vào thư viện của Microsoft
- Cần nhiều tài nguyên hơn
- Phức tạp hơn khi scale
4. Kịch bản ứng dụng đề xuất
| Tình huống | Nên dùng |
|---|---|
| Hiển thị bảng giá, logs, thông báo hệ thống | SSE |
| Chat ứng dụng học trực tuyến, điều khiển từ xa, game | SignalR |
| Dashboard đơn giản, không cần gửi dữ liệu ngược lại | SSE |
| Ứng dụng đa nền tảng, cần phân nhóm người dùng | SignalR |
| Muốn tối ưu hiệu năng với WebSocket & scale cao | SignalR |
➤ Lời khuyên:
Dự án nhỏ, update 1 chiều → chọn SSE
Dự án lớn, chat, điều khiển, game, dashboard 2 chiều → chọn SignalR
Xem thêm về Server-Sent Events (SSE) thay cho SignalR trong .NET
2025 FAiSE - All Rights Reserved.