HTML SSE API
Server-Sent Events (SSE) cho phép một trang web nhận các bản cập nhật từ máy chủ.
Server-Sent Events - Nhắn tin một chiều
Server-Sent Events là khi một trang web tự động nhận cập nhật từ máy chủ.
Điều này cũng có thể xảy ra trước đây, nhưng trang web sẽ phải hỏi xem có bản cập nhật nào không. Với Server-Sent Events, các bản cập nhật sẽ tự động đến.
Ví dụ, cập nhật Facebook/Twitter, cập nhật giá cổ phiếu, new feed (nguồn cấp tin tức), kết quả thể thao, v.v...
Hỗ trợ trình duyệt
Các số trong bảng chỉ định phiên bản trình duyệt đầu tiên hỗ trợ đầy đủ Server-Sent Events.
| API SSE |
Google Chrome | MS Edge | Firefox | Safari | Opera |
|---|---|---|---|---|---|
| 6.0 | 79.0 | 6.0 | 5.0 | 11.5 |
Nhận thông báo Server-Sent Event
Đối tượng EventSource được sử dụng để nhận thông báo sự kiện do máy chủ gửi:
Ví dụ:
var source = new EventSource("demo_sse.php");
source.onmessage = function(event) {
document.getElementById("result").innerHTML += event.data + "<br>";
};
Ví dụ được giải thích như sau:
- Tạo một đối tượng
EventSourcemới và chỉ định URL của trang gửi các bản cập nhật (trong ví dụ này là "demo_sse.php") - Mỗi khi nhận được bản cập nhật, sự kiện onmessage sẽ xảy ra
- Khi sự kiện onmessage xảy ra, hãy đặt dữ liệu đã nhận vào phần tử có id="result"
Kiểm tra hỗ trợ Server-Sent Events
Trong ví dụ ở trên, có một số dòng code bổ sung để kiểm tra hỗ trợ của trình duyệt cho Server-Sent Events:
if(typeof(EventSource) !== "undefined") {
// Yes! Server-sent events support!
// Some code.....
} else {
// Sorry! No server-sent events support..
}Ví dụ về code phía máy chủ
Để ví dụ trên hoạt động, bạn cần một máy chủ có khả năng gửi các bản cập nhật dữ liệu (như PHP hoặc ASP).
Cú pháp luồng sự kiện phía máy chủ rất đơn giản. Đặt header "Content-Type" thành "text/event-stream". Bây giờ, bạn có thể bắt đầu gửi các luồng sự kiện.
Code trong PHP (demo_sse.php):
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>
Code trong ASP (VB) (demo_sse.asp):
<%
Response.ContentType = "text/event-stream"
Response.Expires = -1
Response.Write("data: The server time is: " & now())
Response.Flush()
%>
Code được giải thích như sau:
- Đặt header "Content-Type" thành "text/event-stream".
- Chỉ định rằng trang không được lưu vào bộ nhớ cache
- Xuất dữ liệu để gửi (Luôn bắt đầu bằng "data:")
- Chuyển dữ liệu đầu ra trở lại trang web
Đối tượng EventSource
Trong các ví dụ trên, tác giả bài viết đã sử dụng sự kiện onmessage để nhận tin nhắn. Nhưng các sự kiện khác cũng có sẵn:
| Sự kiện | Mô tả |
|---|---|
| onopen | Khi kết nối với máy chủ được mở |
| onmessage | Khi một tin nhắn được nhận |
| onerror | Khi xảy ra lỗi |
Bạn nên đọc
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:
-
HTML cơ bản
-
Giới thiệu về HTML
-
Công cụ soạn thảo HTML
-
Các ví dụ cơ bản về HTML
-
Các phần tử trong HTML
-
Các thuộc tính trong HTML
-
Tiêu đề trong HTML
-
Đoạn văn trong HTML
-
Thuộc tính Style trong HTML
-
Định dạng văn bản trong HTML
-
Các phần tử trích dẫn trong HTML
-
Thẻ chú thích trong HTML
-
Màu sắc trong HTML
-
Cách chèn khoảng trống trong HTML
-
Tạo kiểu cách cho HTML với CSS
-
Các đường dẫn trong HTML
-
Hình ảnh trong HTML
-
Bảng biểu trong HTML
-
Danh sách trong HTML
-
Phần tử khối và nội dòng trong HTML
-
Thuộc tính class trong HTML
-
Thuộc tính id trong HTML
-
Iframe trong HTML
-
JavaScript trong HTML
-
Đường dẫn tập tin trong HTML
-
Phần tử Head trong HTML
-
Layout trong HTML
-
Responsive trong HTML
-
Phần tử mã máy tính trong HTML
-
HTML Entities - Ký tự thực thể trong HTML
-
Symbol - Biểu tượng trong HTML
-
Mã hóa kí tự trong HTML (Charset)
-
Uniform Resource Locators - URL trong HTML
-
HTML và XHTML
-
Thuộc tính Global trong HTML
-
-
Form trong HTML
-
HTML5
-
Đồ họa trong HTML
-
Media trong HTML
-
API trong HTML
-
Ví dụ về HTML
-
Tham chiếu HTML
-
Thẻ HTML
-
Khai báo <!DOCTYPE>
-
Thẻ <!--...-->
-
Thẻ <a>
-
Thẻ <abbr>
-
Thẻ <address>
-
Thẻ <area>
-
Thẻ <article>
-
Thẻ <aside>
-
Thẻ <b>
-
Thẻ <base>
-
Thẻ <bdi>
-
Thẻ <bdo>
-
Thẻ <blockquote>
-
Thẻ <body>
-
Thẻ <br>
-
Thẻ <button>
-
Thẻ <caption>
-
Thẻ <cite>
-
Thẻ <code>
-
Thẻ <col>
-
Thẻ <colgroup>
-
Thẻ <data>
-
Thẻ <datalist>
-
Thẻ <dd>
-
Thẻ <del>
-
Thẻ <details>
-
Thẻ <dfn>
-
Thẻ <div>
-
Thẻ <dialog>
-
Thẻ <dl>
-
Thẻ <embed>
-
Thẻ <em>
-
Thẻ <fieldset>
-
Thẻ <figcaption>
-
Thẻ <figure>
-
Thẻ <footer>
-
Thẻ <h1> đến <h6>
-
Thẻ <header>
-
Thẻ <hr>
-
Thẻ <html>
-
Thẻ <i>
-
Thẻ <iframe>
-
Thẻ <input>
-
Thẻ <ins>
-
Thẻ <kbd>
-
Thẻ <label>
-
Thẻ <legend>
-
Thẻ <li>
-
Thẻ <link>
-
Thẻ <main>
-
Thẻ <map>
-
Thẻ <mark>
-
Thẻ <meter>
-
Thẻ <nav>
-
Thẻ <noscript>
-
Thẻ <object>
-
Thẻ <ol>
-
Thẻ <optgroup>
-
Thẻ <option>
-
Thẻ <output>
-
Thẻ <p>
-
Thẻ <param>
-
Thẻ <picture>
-
Thẻ <pre>
-
Thẻ <progress>
-
Thẻ <q>
-
Thẻ <rp>
-
Thẻ <rt>
-
Thẻ <ruby>
-
Thẻ <s>
-
Thẻ <samp>
-
Thẻ <script>
-
Thẻ <select>
-
Thẻ <search>
-
Thẻ <section>
-
Thẻ <small>
-
Thẻ <source>
-
Thẻ <strong>
-
Thẻ <sub>
-
Thẻ <summary>
-
Thẻ <span>
-
Thẻ <sup>
-
Thẻ <svg>
-
Thẻ <tbody>
-
Thẻ <td>
-
Thẻ <template>
-
Thẻ <textarea>
-
Thẻ <time>
-
Thẻ <thead>
-
Thẻ <title>
-
Thẻ <tr>
-
Thẻ <tfoot>
-
Thẻ <th>
-
Thẻ <track>
-
Thẻ <u>
-
Thẻ <ul>
-
Thẻ <video>
-
Thẻ <wbr>
-
Hướng dẫn AI
Học IT
Hàm Excel