Push API
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.
Note: This feature is available in Web Workers.
Push API cho phép ứng dụng web nhận các thông điệp được đẩy từ máy chủ, bất kể ứng dụng có đang ở tiền cảnh, hoặc thậm chí có đang được tải hay không, trong user agent. Điều này cho phép nhà phát triển gửi thông báo bất đồng bộ và các bản cập nhật tới người dùng đã chọn tham gia, từ đó cải thiện mức độ tương tác bằng nội dung mới kịp thời.
Khái niệm và cách dùng Push
Warning:
Khi triển khai các đăng ký PushManager, điều cực kỳ quan trọng là bạn phải bảo vệ ứng dụng khỏi các vấn đề CSRF/XSRF. Xem các bài viết sau để biết thêm:
Để một ứng dụng nhận được thông điệp push, ứng dụng đó phải có một service worker đang hoạt động. Khi service worker hoạt động, nó có thể đăng ký nhận thông báo push bằng PushManager.subscribe().
PushSubscription thu được bao gồm toàn bộ thông tin mà ứng dụng cần để gửi một thông điệp push: một endpoint và khóa mã hóa cần để gửi dữ liệu.
Service worker sẽ được khởi động khi cần để xử lý các thông điệp push đến, và các thông điệp này sẽ được chuyển tới trình xử lý sự kiện onpush. Điều này cho phép ứng dụng phản ứng khi nhận được thông điệp push, chẳng hạn bằng cách hiển thị thông báo (sử dụng ServiceWorkerRegistration.showNotification()).
Mỗi đăng ký là duy nhất đối với một service worker. Endpoint của đăng ký là một URL khả năng duy nhất. Chỉ cần biết endpoint là đủ để gửi thông điệp tới ứng dụng của bạn. Vì vậy, URL endpoint cần được giữ bí mật, nếu không ứng dụng khác có thể gửi thông điệp push vào ứng dụng của bạn.
Việc kích hoạt service worker để gửi một thông điệp push có thể làm tăng mức sử dụng tài nguyên, đặc biệt là pin. Các trình duyệt khác nhau có cơ chế xử lý khác nhau, và hiện vẫn chưa có cơ chế chuẩn. Firefox cho phép một số lượng giới hạn (hạn ngạch) thông điệp push được gửi tới một ứng dụng, mặc dù các thông điệp push tạo ra thông báo thì được miễn giới hạn này. Giới hạn được làm mới mỗi khi trang web được truy cập. Trong Chrome thì không có giới hạn.
Giao diện
PushEvent-
Đại diện cho một hành động push, được gửi tới global scope của một
ServiceWorker. Nó chứa thông tin được gửi từ ứng dụng tớiPushSubscription. PushManager-
Cung cấp một cách để nhận thông báo từ các máy chủ bên thứ ba, cũng như yêu cầu URL cho các thông báo push.
PushMessageData-
Cung cấp quyền truy cập vào dữ liệu push do máy chủ gửi, cùng các phương thức để thao tác dữ liệu nhận được.
PushSubscription-
Cung cấp endpoint URL của một đăng ký, và cho phép hủy đăng ký khỏi dịch vụ push.
PushSubscriptionOptions-
Đại diện cho các tùy chọn gắn với đăng ký push.
Các bổ sung cho service worker
Những bổ sung sau cho Service Worker API đã được định nghĩa trong đặc tả Push API để cung cấp một điểm vào cho việc sử dụng thông điệp Push. Chúng cũng theo dõi và phản hồi các sự kiện push và thay đổi đăng ký.
ServiceWorkerRegistration.pushManagerRead only-
Trả về một tham chiếu tới giao diện
PushManagerđể quản lý các đăng ký push, bao gồm đăng ký, lấy đăng ký đang hoạt động và truy cập trạng thái quyền push. Đây là điểm vào để sử dụng push messaging. onpush-
Trình xử lý sự kiện được kích hoạt bất cứ khi nào xảy ra sự kiện
push; tức là khi một thông điệp push từ máy chủ được nhận. onpushsubscriptionchange-
Trình xử lý sự kiện được kích hoạt bất cứ khi nào xảy ra sự kiện
pushsubscriptionchange; ví dụ khi một đăng ký push đã bị vô hiệu hóa, hoặc sắp bị vô hiệu hóa, chẳng hạn khi dịch vụ push đặt thời gian hết hạn.
Ví dụ
Kho ServiceWorker Cookbook của Mozilla chứa nhiều ví dụ Push hữu ích.
Thông số kỹ thuật
| Specification |
|---|
| Push API> # pushevent-interface> |
| Push API> # pushmessagedata-interface> |