Giới thiệu
Chúng ta đã nghe nhiều về ứng dụng web real-time (như ứng dụng chat, game online,…), một trong những cách thức phổ biến được dùng đến đó là Web Socket. Bên cạnh đó các bạn cũng có thể đã nghe qua về các công nghệ khác như Ajax polling, Server-Sent events,…
Đang xem: Sse là gì, sse nghĩa là gì trong tiếng việt
Trong bài viết này, mình xin giới thiệu về HTML5 Server-Sent events.
HTML5 Server-Sent Events là gì?
HTML5 Server-Sent Events (SSE) hay còn được biết đến với tên gọi HTML5 Event Source là một Web Api cho phép kết nối thời gian thực giữa server và client (browser). Tuy nhiên, khác với WebSockets, SSE chỉ có 1 chiều dữ liệu, đó là từ server đến client (chỉ có server gửi dữ liệu đến client).
Tại sao dùng SSE khi đã có Web Sockets
Ưu điểm của SSE đó là API đơn giản, dễ thực hiện, không yêu cầu việc setup và implement phức tạp như Web sockets. SSE hoạt động với giao thức HTTP thông thường, không yêu cầu một Web socket server mới hay các giao thức đặc biệt khác.
Trong thực tế, không phải ứng dụng web real time nào cũng cần sự tương tác 2 chiều giữa client và server, trong trường hợp này việc sử dụng SSE là dễ dàng hơn rất nhiều. Có thể kế đến một số trường hợp như:
Ứng dụng dashboard, đồ thị chartNews feedsỨng dụng theo dõi hoạt động của serverỨng dụng có dữ liệu thay đổi nhanh chóng như giá cả, thị trường, tình trạng hàng hóa, thông tin các trận đấu thể thao,…
Một ưu điểm nữa của SSE đó là, client có thể tự động kết nối lại server nếu bị mất kết nối, thời gian timeout trước khi client kết nối lại có thể tùy chỉnh được từ server. Khi thực hiện kết nối lại, client sẽ tự động gửi ID của event cuối cùng nó nhận được, nhờ đó server có thể biết được client đã bị bỏ qua bao nhiêu message để gửi lại những message đó.
SSE hoạt động với hầu hết các trình duyệt, ngoại trừ IE. Không biết trong tương lai IE có support hay nó có còn tồn tại hay không
p=. _^http://stackoverflow.com/questions/11077857/what-are-long-polling-websockets-server-sent-events-sse-and-comet^_SSE gồm 2 thành phần chínhServer side gửi dữ liệu dạng text UTF-8 đến client theo định dạng “Event stream” (MIME: text/event-stream).
Định dạng event stream
Dạng đơn giản, response chỉ trả về dữ liệu (phần phía sau data:), kết thúc bằng 2 ký tự
. Client sẽ nhận event mặc định là message, client lấy dữ liệu thông qua event.data
data: a message
Dữ liệu dạng JSON
data: {“message”: “JSON”}
Kèm theo message id, client lấy giá trị này thông qua event.lastEventId
id: 1111
data: a message
Kèm theo event name, eg: custom-event, client lắng nghe sự kiện custom-event
data: Data of message event
event: custom-event
data: Data of custom-event
Các dòng bắt đầu với kí tự : được xem như comment
: This is a commentdata: a message
Kiểm soát thời gian timeout trước khi client thực hiện kết nối lại, ví dụ 10s