SignalR là một thư viện giành cho ASP.NET nhằm đơn giản hóa việc xây dựng các ứng dụng web thời gian thực. Chức năng thời gian thực ở đây là khả năng máy chủ sẽ chủ động đẩy dữ liệu về cho client nếu client đó kết nối tới máy chủ thay vì các client phải gửi yêu cầu làm mới dữ liệu tới máy chủ.
Đang xem: Signalr là gì
Mô hình bình thường của web là client gửi request đến server và server trả về kết quả tương ứng cho client, nhưng giờ ta có một cách thức nữa để tương tác: server “push” trực tiếp dữ liệu về client, theo thời gian thực. Ngoài ra, mô hình này cũng giúp ta xây dựng ứng dụng bất đồng bộ lên đến hàng nghìn kết nối một lúc với máy chủ
Signalr xử lý kết nối một cách tự động, nó cho phép gửi thông báo đến tất cả các client trong cùng một khoảng thời gian. Nó cũng cho phép gửi thông báo đến từng client riêng biệt. Kết nối giữa client và server được duy trì liên tục, không giống kiểu HTTP cũ.
Signalr hỗ trợ chức năng “server push”, trong đó code ở phía server có thể gọi code ở phía trình duyệt bằng cách sử dụng lời gọi thủ tục từ xa (Remove Proceduce Calls), chứ không phải là mô hình đáp ứng yêu cầu phố biên trên web hiện nay.
Ứng dụng sư dụng signalR có thể mở rộng cho hàng ngàn kết nối bằng cách sử dụng Service Bus, SQL server, hoặc redis
2. Phương thức vận chuyển
Trong phần này mình sẽ nói về các cách thức mà SignalR sử dụng để gửi dữ liệu về client. SignalR cung một loại các cơ chế để gửi dữ liệu về client, tùy theo điều kiện đáp ứng của nền tảng máy chủ và client mà SignalR sẽ tự động lự chọn phương thức phù hợp nhất.
Xem thêm: Chemdraw 16 Crack
Một kết nối SignalR được bắt đầu bằng giao thức HTTP, sau đó nó sẽ được chuyển sang kết nối kiểu WebSocket nếu nó được hỗ trợ. Ở đây mình sẽ chia ra làm 2 loại như sau:
HTML 5 tranport
Server Send Event: hay còn được gọi là EventSource hỗ trợ tất cả các trình duyệt trừ IE
Comet tranport
Forever Frame (for Internet Explorer only) Kỹ thuật Forever Iframes sử dụng một thẻ Iframe ẩn đặt trong trang với thuộc tính src trỏ đến đường dẫn servlet nhằm trả về các sự kiện máy chủ. Mỗi khi nhận được một sự kiện, servlet sẽ viết và đổ vào một thẻ script với mã JavaScript bên trong. Nội dung của iframe sẽ được thêm vào thẻ script này và được thực thi.Ajax long polling Kỹ thuật này không tạo một kết nối liên tục, nhưng nó vẫn mở kết lối cho đến khi nhận được dữ liệu trả về từ server lúc này kết lỗi cũ sẽ được đóng lại và một kết lối mới sẽ được mở ra. Điều này có thể dẫn đến một độ trễ nhất định.
Xem thêm: ” Move Là Gì ? Định Nghĩa, Ví Dụ, Giải Thích Nghĩa Của Từ Moves Trong Tiếng Việt
Quá trình lựa chọn các cách thức kết nối của SignalR
IE 8 hoặc nhỏ hơn thì sử dụng Long PollingNếu JSONP được cấu hình thì sử dụng Long PollingWeb Sockets được sử dụng khi các yếu tố sau được đảm bảoClient hỗ trợ CORS (Cross-Origin Resource Sharing)Client hỗ trợ Web SocketsServer hỗ trợ Web SocketsNếu một trong ba yếu tố trên không được đáp ứng thì Long Polling sẽ được sử dụng.Nếu JSONP không được cấu hình và kết nối không hỗ trợ cross-domain. Web Sockets sẽ được sử dụng nếu cả server và client đều hỗ trợ Web SocketsNếu client hoặc server không hỗ trợ Web Sockets, Server Send Events sẽ được sử dụng nếu nó có sẵn.Nếu Server Send Events không có thì Forever Frame sẽ được sử dụng.Nếu Forever Frame không có thì Long Polling sẽ được sử dụng.
Tham khảo: http://webvietgroup.com/xay-dung-web-thoi-gian-thuc-voi-signalr-bai-1/