PubNub — nó là gì, SDK thời gian thực và cách hoạt động trong ứng dụng

Tác giả: IT Sectr Đã đăng: 2026-06-02 Thời gian đọc: 8 phút

PubNub là một mạng toàn cầu cho nhắn tin thời gian thực, cung cấp cơ sở hạ tầng để xuất bản và đăng ký nhận tin nhắn qua WebSocket với độ trễ tối thiểu. Nó được thiết kế cho các ứng dụng yêu cầu phân phối dữ liệu đáng tin cậy khi tải cao và kết nối không ổn định. Theo tài liệu chính thức của PubNub (2025), nền tảng này xử lý hơn 1 nghìn tỷ tin nhắn hàng tháng cho hơn 70.000 ứng dụng trên toàn thế giới.

Những điểm chính

  • PubNub là mạng toàn cầu cho tin nhắn thời gian thực với hơn 15 trung tâm dữ liệu và phân phối được đảm bảo.
  • Pub/Sub với khóa — xuất bản và đăng ký qua khóa publish/subscribe với phân tách quyền truy cập.
  • Stream Controller — quản lý luồng tin nhắn với hỗ trợ lọc, chuyển đổi và đệm.
  • Presence — theo dõi trạng thái trực tuyến của người tham gia kênh với phát hiện hết thời gian chờ.
  • SDK cho hơn 75 nền tảng — hệ sinh thái thư viện client lớn nhất trong các dịch vụ thời gian thực.

PubNub là gì?

PubNub là một mạng dữ liệu thời gian thực toàn cầu, được thành lập vào năm 2010. Nó cung cấp API để xuất bản và đăng ký tin nhắn, cùng với các dịch vụ bổ sung: lưu trữ lịch sử, quản lý hiện diện, chức năng không máy chủ (PubNub Functions) và phân tích luồng dữ liệu.

Kiến trúc của PubNub dựa trên mạng phân tán các điểm hiện diện (POP) nằm tại hơn 15 khu vực địa lý. Mỗi điểm chứa các broker bộ nhớ đệm định tuyến tin nhắn giữa người xuất bản và người đăng ký với độ trễ tối thiểu. PubNub không sử dụng một broker trung tâm duy nhất — mỗi khu vực hoạt động độc lập và đồng bộ hóa qua mạng toàn cầu.

Theo trang web chính thức của PubNub (2025), nền tảng phục vụ hơn 70.000 ứng dụng tại hơn 200 quốc gia. Khách hàng chính bao gồm Logitech (quản lý thiết bị IoT), GoPro (phát video trực tiếp thời gian thực), eBay (đồng bộ hóa đấu giá) và Snapchat (trò chuyện và thông báo).

Các nguyên tắc chính của PubNub

PubNub được xây dựng trên ba nguyên tắc: tốc độ (độ trễ dưới 10 ms ở phân vị thứ 95 trong một khu vực), độ tin cậy (đảm bảo phân phối at-least-once với tự động thử lại) và khả năng mở rộng (mở rộng theo chiều ngang không giới hạn số lượng kênh). Nền tảng không lưu trữ tin nhắn trong bộ nhớ dài hạn — lịch sử có sẵn thông qua dịch vụ Storage & Playback được kết nối riêng.

PubNub hoạt động như thế nào

Mô hình hoạt động của PubNub dựa trên mẫu publish-subscribe cổ điển. Client xuất bản gửi một tin nhắn chỉ định kênh qua PubNub REST API với khóa publish. PubNub phân phối tin nhắn đến tất cả người đăng ký của kênh đó qua kết nối WebSocket đang hoạt động của họ. Người đăng ký nhận tin nhắn qua trình xử lý callback đã đăng ký trong PubNub SDK.

Lớp truyền tải của PubNub sử dụng WebSocket làm giao thức chính, với dự phòng xuống HTTP long-polling cho các môi trường có hạn chế. SDK tự động quản lý kết nối: thiết lập, duy trì heartbeat (15–60 giây một lần tùy theo mạng) và kết nối lại khi bị ngắt.

Mỗi tin nhắn trong PubNub chứa siêu dữ liệu: UUID người gửi, dấu thời gian, số thứ tự (timetoken) và cờ (store, replicate, eatAfterRead). Timetoken là mã định danh PubNub duy nhất dựa trên thời gian đảm bảo thứ tự toàn cầu của tin nhắn trong một kênh. Theo tài liệu PubNub (2025), độ phân giải của timetoken là 10 nano giây.

Luồng tin nhắn

Khi client xuất bản một tin nhắn, nó đi qua Stream Controller — mô-đun định tuyến của PubNub. Stream Controller kiểm tra quyền truy cập (PAM), áp dụng các quy tắc chuyển đổi (PubNub Functions), xác định khu vực đích và gửi tin nhắn đến tất cả người đăng ký. Nếu người đăng ký ngoại tuyến, tin nhắn được đệm trong 30 giây (mặc định) trong khi chờ khôi phục kết nối.

Khóa PubNub: publish, subscribe, secret

Hệ thống khóa của PubNub phân tách quyền truy cập thành ba cấp độ: khóa publish (chỉ xuất bản), khóa subscribe (chỉ đăng ký) và khóa secret (quản trị). Mỗi ứng dụng nhận được một bộ ba khóa khi đăng ký, nhưng khóa secret không bao giờ được truyền cho client — nó chỉ được sử dụng ở phía máy chủ.

Khóa publish được sử dụng để gửi tin nhắn đến các kênh. Khóa subscribe được sử dụng để đăng ký kênh và nhận tin nhắn. Khóa secret được sử dụng để quản lý truy cập qua PubNub Access Manager (PAM), tạo mã thông báo khán giả tạm thời và quản lý khóa. Khóa secret được giữ an toàn trên máy chủ và không bao giờ tiết lộ cho client.

PubNub hỗ trợ nhiều chế độ xác thực: theo địa chỉ IP (cho máy chủ), theo khóa secret (cho hoạt động quản trị), theo mã thông báo tạm thời (cho client). Mã thông báo tạm thời được cấp qua PAM với các giới hạn về thời gian hết hạn, kênh và quyền (read, write, manage).

Kênh PubNub

Kênh PubNub là các tuyến tin nhắn có tên. Tên kênh là một chuỗi dài tới 92 ký tự, hỗ trợ chữ cái Latinh, chữ số, dấu gạch ngang và gạch dưới. Kênh được tạo động khi xuất bản hoặc đăng ký lần đầu. PubNub hỗ trợ mẫu kênh thông qua ký tự * trong yêu cầu đăng ký — cho phép đăng ký một nhóm kênh (ví dụ: user-*).

Channel Groups là cơ chế nhóm kênh để đăng ký hàng loạt. Thay vì đăng ký 50 kênh riêng lẻ, client đăng ký một nhóm và tất cả tin nhắn từ các kênh trong nhóm đó được tự động phân phối đến client. Channel Groups hỗ trợ lồng nhau nhưng độ sâu không được vượt quá 3 cấp.

Theo tài liệu kỹ thuật PubNub (2025), số lượng người đăng ký tối đa trên mỗi kênh là 50.000. Đối với tải cao hơn, nên sử dụng kênh có tiền tố và phân mảnh khán giả (ví dụ: chat-room-001, chat-room-002). Channel Groups cũng có thể được tổ chức theo nguyên tắc địa lý hoặc chủ đề.

Tham sốTối đaGhi chú
Độ dài tên kênh92 ký tựChữ Latinh, số, -, _
Người đăng ký mỗi kênh50.000Cao hơn — phân mảnh
Channel Groups2000 nhóm / khóaTối đa 500 kênh mỗi nhóm
Lịch sử (lưu trữ)Không giới hạnThanh toán theo dung lượng lưu trữ

Cách sử dụng PubNub trong dự án

Tích hợp PubNub yêu cầu đăng ký, tạo ứng dụng trong bảng quản trị và nhận bộ khóa. Thư viện PubNub có sẵn cho JavaScript, Swift, Kotlin, Java, Dart (Flutter), C#, Python, Ruby, Go và nhiều ngôn ngữ khác. Hãy xem ví dụ trong JavaScript cho trình duyệt và Node.js.

Theo tài liệu PubNub (2025), thư viện pubnub-js hỗ trợ cả import CommonJS và ES Module. Đối với trình duyệt, nên sử dụng bản dựng npm sau đó đóng gói qua webpack hoặc Vite.

Đăng ký kênh

js
import PubNub from 'pubnub';

const pubnub = new PubNub({
    publishKey: 'PUBLISH_KEY',
    subscribeKey: 'SUBSCRIBE_KEY',
    userId: 'user-100'
});

pubnub.subscribe({
    channels: ['chat-general']
});

pubnub.addListener({
    message: (event) => {
        console.log('Tin nhắn mới:', event.message);
    },
    presence: (event) => {
        console.log('Hiện diện:', event.uuid, event.action);
    }
});

pubnub.publish({
    channel: 'chat-general',
    message: { text: 'Hello everyone!', sender: 'user-100' }
});

Lấy lịch sử tin nhắn

js
pubnub.fetchMessages(
    { channels: ['chat-general'], count: 50 },
    (status, response) => {
        if (status.error) {
            console.error('Lỗi khi lấy lịch sử', status);
            return;
        }
        const messages = response.channels['chat-general'];
        messages.forEach((msg) => {
            console.log(msg.message, msg.timetoken);
        });
    }
);

PubNub Functions và Stream Controller

PubNub Functions là nền tảng không máy chủ để xử lý tin nhắn ở phía PubNub. Các hàm được viết bằng JavaScript và thực thi trong môi trường cách ly an toàn (V8 isolate). Chúng có thể chuyển đổi, lọc, đệm và chuyển hướng tin nhắn trước khi được phân phối đến người đăng ký.

Stream Controller là cơ chế định tuyến tích hợp quản lý luồng tin nhắn dựa trên các quy tắc. Các quy tắc xác định tin nhắn nào được phân phối, tin nhắn nào bị loại bỏ và tin nhắn nào được gửi đến PubNub Functions để xử lý. Stream Controller hỗ trợ định tuyến có điều kiện theo nội dung tin nhắn, loại kênh hoặc siêu dữ liệu.

Theo blog PubNub (2024), PubNub Functions giảm chi phí cơ sở hạ tầng máy chủ cho xử lý tin nhắn từ 40–60% bằng cách thực thi logic lọc và chuyển đổi trên các nút biên của PubNub thay vì trên máy chủ của riêng bạn. Các hàm có quyền truy cập vào yêu cầu HTTP, lưu trữ Key-Value và các hàm khác trong cùng không gian.

PubNub trong ứng dụng di động

PubNub SDK cho nền tảng di động có sẵn cho iOS (Swift), Android (Kotlin/Java), Flutter (Dart) và React Native (JavaScript). SDK di động hỗ trợ đầy đủ các tính năng: pub/sub, hiện diện, lịch sử, PAM và PubNub Functions. Đối với thông báo push, PubNub tích hợp với APNs và FCM thông qua cơ chế cổng push di động đặc biệt.

Tối ưu hóa cho thiết bị di động bao gồm heartbeat thích ứng, xử lý tin nhắn theo lô và hỗ trợ chế độ nền. PubNub SDK cho iOS sử dụng Background Task API để duy trì kết nối khi ứng dụng bị thu nhỏ (tối đa 30 giây thời gian nền tiêu chuẩn). Để hoạt động nền lâu hơn, cần có thông báo push.

Mobile Push Gateway là cơ chế gửi thông báo push qua PubNub. Khi một tin nhắn được xuất bản lên kênh, PubNub tự động xác định người đăng ký nào đang ngoại tuyến và gửi cho họ thông báo push qua APNs (iOS) hoặc FCM (Android). Cấu hình được thực hiện một lần trong bảng quản trị — sau đó, tất cả tin nhắn từ kênh được tự động sao chép vào kênh push. Theo tài liệu PubNub (2025), cổng xử lý tới 10.000 thông báo push mỗi giây.

Câu hỏi thường gặp

PubNub khác Pusher như thế nào?

PubNub cung cấp nhiều SDK hơn (hơn 75 nền tảng), chức năng không máy chủ tích hợp và Stream Controller để xử lý tin nhắn. Pusher dễ cấu hình hơn, nhưng PubNub cho kiểm soát nhiều hơn về định tuyến và chuyển đổi dữ liệu.

PubNub đảm bảo phân phối tin nhắn như thế nào?

PubNub sử dụng cơ chế at-least-once với tự động thử lại khi thất bại. Mỗi tin nhắn có timetoken duy nhất để khử trùng lặp. Tin nhắn được đệm trong 30 giây cho người đăng ký ngoại tuyến.

PubNub có giá bao nhiêu?

Gói miễn phí bao gồm 100 kết nối đồng thời và 1 triệu tin nhắn mỗi tháng. Gói trả phí bắt đầu từ $49/tháng cho 1000 kết nối đồng thời với tin nhắn không giới hạn.

PubNub có hỗ trợ mã hóa không?

Có, PubNub hỗ trợ TLS 1.3 cho tất cả kết nối và mã hóa tùy chọn đầu cuối ở phía client (AES-256) với quản lý khóa qua PAM. Chế độ Cipher Key có sẵn cho khách hàng doanh nghiệp.

PubNub SDK hỗ trợ những ngôn ngữ nào?

PubNub cung cấp SDK cho hơn 75 nền tảng, bao gồm JavaScript, Swift, Kotlin, Java, Dart, C#, Python, Ruby, Go, C++, PHP, Rust và Objective-C. Đây là hệ sinh thái lớn nhất trong các dịch vụ thời gian thực.

Tóm tắt

  • PubNub là mạng nhắn tin thời gian thực toàn cầu với hơn 15 trung tâm dữ liệu và hỗ trợ hơn 75 nền tảng.
  • Hệ thống khóa publish/subscribe/secret + PAM cung cấp quản lý quyền truy cập linh hoạt.
  • PubNub Functions cho phép xử lý tin nhắn không máy chủ mà không cần cơ sở hạ tầng máy chủ riêng.
  • Stream Controller quản lý định tuyến, lọc và chuyển đổi tin nhắn tại các nút biên mạng.
  • Mobile Push Gateway tự động gửi thông báo push qua APNs và FCM cho người đăng ký ngoại tuyến.
  • Kênh hỗ trợ tới 50.000 người đăng ký và Channel Groups đơn giản hóa việc quản lý nhiều kênh.
  • Đối với dự án có hỗ trợ nền tảng rộng và xử lý tin nhắn tích hợp, hãy chọn PubNub; cho các kịch bản đơn giản hơn, Pusher phù hợp.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm