PubNub — ένα παγκόσμιο δίκτυο για ανταλλαγή μηνυμάτων σε πραγματικό χρόνο, που παρέχει υποδομή για δημοσίευση και εγγραφή σε μηνύματα μέσω WebSocket με ελάχιστη καθυστέρηση. Απευθύνεται σε εφαρμογές που απαιτούν αξιόπιστη παράδοση δεδομένων υπό υψηλό φορτίο και ασταθή σύνδεση. Σύμφωνα με την επίσημη τεκμηρίωση του PubNub (2025), η πλατφόρμα επεξεργάζεται πάνω από 1 τρισεκατομμύριο μηνύματα μηνιαίως για 70 000+ εφαρμογές παγκοσμίως.
Βασικά σημεία
PubNub — ένα παγκόσμιο δίκτυο μετάδοσης δεδομένων σε πραγματικό χρόνο, που ιδρύθηκε το 2010. Παρέχει API για δημοσίευση και εγγραφή σε μηνύματα, καθώς και πρόσθετες υπηρεσίες: αποθήκευση ιστορικού, διαχείριση παρουσίας, λειτουργίες serverless (PubNub Functions) και ανάλυση ροών δεδομένων.
Η αρχιτεκτονική του PubNub βασίζεται σε ένα κατανεμημένο δίκτυο σημείων παρουσίας (POP) που βρίσκονται σε 15+ γεωγραφικές περιοχές. Κάθε σημείο περιέχει ενδιάμεσους εξυπηρετητές προσωρινής αποθήκευσης που δρομολογούν μηνύματα μεταξύ εκδοτών και συνδρομητών με ελάχιστη καθυστέρηση. Το PubNub δεν χρησιμοποιεί έναν κεντρικό ενδιάμεσο εξυπηρετητή — κάθε περιοχή λειτουργεί ανεξάρτητα και συγχρονίζεται μέσω του παγκόσμιου δικτύου.
Σύμφωνα με την επίσημη ιστοσελίδα του PubNub (2025), η πλατφόρμα εξυπηρετεί πάνω από 70 000 εφαρμογές σε 200+ χώρες. Μεταξύ των βασικών πελατών είναι η Logitech (διαχείριση συσκευών IoT), η GoPro (μετάδοση βίντεο σε πραγματικό χρόνο), το eBay (συγχρονισμός δημοπρασιών) και το Snapchat (συνομιλία και ειδοποιήσεις).
Το PubNub είναι χτισμένο σε τρεις αρχές: ταχύτητα (καθυστέρηση μικρότερη από 10 ms στο 95ο εκατοστημόριο εντός μιας περιοχής), αξιοπιστία (εγγύηση παράδοσης at-least-once με αυτόματη επανάληψη) και επεκτασιμότητα (οριζόντια επέκταση χωρίς περιορισμό στον αριθμό των καναλιών). Η πλατφόρμα δεν αποθηκεύει μηνύματα σε μακροπρόθεσμη αποθήκευση — το ιστορικό είναι προσβάσιμο μέσω της ξεχωριστά συνδεόμενης υπηρεσίας Storage & Playback.
Το μοντέλο λειτουργίας του PubNub βασίζεται στο κλασικό μοτίβο publish-subscribe. Ο πελάτης εκδότης στέλνει ένα μήνυμα προσδιορίζοντας το κανάλι μέσω του PubNub REST API με το κλειδί publish. Το PubNub παραδίδει το μήνυμα σε όλους τους συνδρομητές αυτού του καναλιού μέσω των ενεργών συνδέσεών τους WebSocket. Οι συνδρομητές λαμβάνουν το μήνυμα μέσω ενός callback χειριστή καταχωρημένου στο PubNub SDK.
Το επίπεδο μεταφοράς του PubNub χρησιμοποιεί το WebSocket ως κύριο πρωτόκολλο, με εφεδρικό το HTTP long-polling για περιβάλλοντα με περιορισμούς. Το SDK διαχειρίζεται αυτόματα τη σύνδεση: την εγκαθιστά, διατηρεί heartbeat (κάθε 15–60 δευτερόλεπτα ανάλογα με το δίκτυο) και επανασυνδέεται σε περίπτωση διακοπής.
Κάθε μήνυμα στο PubNub περιέχει μεταδεδομένα: UUID του αποστολέα, χρονική σήμανση, αύξοντα αριθμό (timetoken) και σημαίες (store, replicate, eatAfterRead). Timetoken — ένα μοναδικό αναγνωριστικό του PubNub βασισμένο στον χρόνο, που εγγυάται την παγκόσμια σειρά των μηνυμάτων στο κανάλι. Σύμφωνα με την τεκμηρίωση του PubNub (2025), το timetoken έχει ανάλυση 10 νανοδευτερολέπτων.
Όταν ένας πελάτης δημοσιεύει ένα μήνυμα, αυτό περνά μέσα από τον Stream Controller — την ενότητα δρομολόγησης του PubNub. Ο Stream Controller ελέγχει τα δικαιώματα πρόσβασης (PAM), εφαρμόζει κανόνες μετασχηματισμού (PubNub Functions), καθορίζει τις περιοχές προορισμού και στέλνει το μήνυμα σε όλους τους συνδρομητές. Εάν ένας συνδρομητής είναι αποσυνδεδεμένος, το μήνυμα αποθηκεύεται προσωρινά για 30 δευτερόλεπτα (προεπιλογή) εν αναμονή της αποκατάστασης της σύνδεσης.
Το σύστημα κλειδιών του PubNub χωρίζει τα δικαιώματα πρόσβασης σε τρία επίπεδα: κλειδί publish (μόνο δημοσίευση), κλειδί subscribe (μόνο εγγραφή) και κλειδί secret (διαχείριση). Κάθε εφαρμογή λαμβάνει ένα σύνολο τριών κλειδιών κατά την εγγραφή, αλλά το κλειδί secret δεν μεταδίδεται ποτέ στον πελάτη — χρησιμοποιείται μόνο στην πλευρά του διακομιστή.
Το κλειδί publish χρησιμοποιείται για αποστολή μηνυμάτων σε κανάλια. Το κλειδί subscribe — για εγγραφή σε κανάλια και λήψη μηνυμάτων. Το κλειδί secret — για διαχείριση πρόσβασης μέσω του PubNub Access Manager (PAM), δημιουργία προσωρινών διακριτικών κοινού και διαχείριση κλειδιών. Το κλειδί secret αποθηκεύεται με ασφάλεια στον διακομιστή και ποτέ δεν αποκαλύπτεται στους πελάτες.
Το PubNub υποστηρίζει πολλαπλούς τρόπους αυθεντικοποίησης: κατά διεύθυνση IP (για διακομιστές), κατά μυστικό κλειδί (για διαχειριστικές λειτουργίες), κατά προσωρινά διακριτικά (για πελάτες). Τα προσωρινά διακριτικά εκδίδονται μέσω του PAM με περιορισμό χρόνου, καναλιών και δικαιωμάτων (read, write, manage).
Κανάλια PubNub — ονομασμένες διαδρομές για μηνύματα. Το όνομα του καναλιού είναι μια συμβολοσειρά έως 92 χαρακτήρες, που υποστηρίζει λατινικούς χαρακτήρες, αριθμούς, παύλες και υπογράμμιση. Τα κανάλια δημιουργούνται δυναμικά κατά την πρώτη δημοσίευση ή εγγραφή. Το PubNub υποστηρίζει μοτίβα καναλιών μέσω του συμβόλου * στο αίτημα subscribe — αυτό επιτρέπει την εγγραφή σε μια ομάδα καναλιών (π.χ. user-*).
Channel Groups — μηχανισμός ομαδοποίησης καναλιών για μαζική εγγραφή. Αντί να εγγραφεί σε 50 ξεχωριστά κανάλια, ο πελάτης εγγράφεται σε μία ομάδα και όλα τα μηνύματα από τα κανάλια που περιλαμβάνονται σε αυτήν παραδίδονται αυτόματα στον πελάτη. Οι Channel Groups υποστηρίζουν ένθεση, αλλά το βάθος δεν πρέπει να υπερβαίνει τα 3 επίπεδα.
Σύμφωνα με την τεχνική τεκμηρίωση του PubNub (2025), ο μέγιστος αριθμός συνδρομητών ανά κανάλι είναι 50 000. Για υψηλότερα φορτία, συνιστάται η χρήση καναλιών με προθέματα και ο κατακερματισμός του κοινού (π.χ. chat-room-001, chat-room-002). Οι Channel Groups μπορούν επίσης να οργανωθούν με γεωγραφική ή θεματική αρχή.
| Παράμετρος | Μέγιστο | Σημείωση |
|---|---|---|
| Μήκος ονόματος καναλιού | 92 χαρακτήρες | Λατινικά, αριθμοί, -, _ |
| Συνδρομητές ανά κανάλι | 50 000 | Περισσότεροι — κατακερματισμός |
| Channel Groups | 2000 ομάδες / κλειδί | Έως 500 κανάλια ανά ομάδα |
| Ιστορικό (storage) | Απεριόριστο | Πληρωμή ανά όγκο αποθήκευσης |
Η ενοποίηση του PubNub απαιτεί εγγραφή, δημιουργία εφαρμογής στον πίνακα διαχείρισης και λήψη ενός συνόλου κλειδιών. Οι βιβλιοθήκες του PubNub είναι διαθέσιμες για JavaScript, Swift, Kotlin, Java, Dart (Flutter), C#, Python, Ruby, Go και πολλές άλλες γλώσσες. Ας δούμε ένα παράδειγμα σε JavaScript για πρόγραμμα περιήγησης και Node.js.
Σύμφωνα με την τεκμηρίωση του PubNub (2025), η βιβλιοθήκη pubnub-js υποστηρίζει τόσο CommonJS όσο και ES Module εισαγωγή. Για το πρόγραμμα περιήγησης, συνιστάται η εγκατάσταση μέσω npm και στη συνέχεια η δημιουργία bundle μέσω webpack ή vite.
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('Νέο μήνυμα:', event.message);
},
presence: (event) => {
console.log('Παρουσία:', event.uuid, event.action);
}
});
pubnub.publish({
channel: 'chat-general',
message: { text: 'Hello everyone!', sender: 'user-100' }
});
pubnub.fetchMessages(
{ channels: ['chat-general'], count: 50 },
(status, response) => {
if (status.error) {
console.error('Σφάλμα κατά την ανάκτηση ιστορικού', status);
return;
}
const messages = response.channels['chat-general'];
messages.forEach((msg) => {
console.log(msg.message, msg.timetoken);
});
}
);
PubNub Functions — πλατφόρμα serverless για επεξεργασία μηνυμάτων στην πλευρά του PubNub. Οι συναρτήσεις γράφονται σε JavaScript και εκτελούνται σε ασφαλές απομονωμένο περιβάλλον (V8 isolate). Μπορούν να μετασχηματίζουν, να φιλτράρουν, να αποθηκεύουν προσωρινά και να ανακατευθύνουν μηνύματα πριν παραδοθούν στους συνδρομητές.
Stream Controller — ενσωματωμένος μηχανισμός δρομολόγησης που διαχειρίζεται τη ροή μηνυμάτων βάσει κανόνων. Οι κανόνες καθορίζουν ποια μηνύματα παραδίδονται, ποια απορρίπτονται και ποια δρομολογούνται στο PubNub Functions για επεξεργασία. Ο Stream Controller υποστηρίζει υπό όρους δρομολόγηση ανά περιεχόμενο μηνύματος, τύπο καναλιού ή μεταδεδομένα.
Σύμφωνα με το ιστολόγιο του PubNub (2024), οι PubNub Functions μειώνουν το κόστος υποδομής διακομιστή για επεξεργασία μηνυμάτων κατά 40–60% χάρη στο γεγονός ότι η λογική φιλτραρίσματος και μετασχηματισμού εκτελείται στους ακραίους κόμβους του PubNub, όχι στον δικό σας διακομιστή. Οι συναρτήσεις έχουν πρόσβαση σε αιτήματα HTTP, αποθήκευση Key-Value και άλλες συναρτήσεις στον ίδιο χώρο.
PubNub SDK για πλατφόρμες κινητών είναι διαθέσιμα για iOS (Swift), Android (Kotlin/Java), Flutter (Dart) και React Native (JavaScript). Τα κινητά SDK υποστηρίζουν το πλήρες σύνολο λειτουργιών: pub/sub, παρουσία, ιστορικό, PAM και PubNub Functions. Για ειδοποιήσεις push, το PubNub ενοποιείται με τα APNs και FCM μέσω ενός ειδικού μηχανισμού mobile push gateway.
Βελτιστοποίηση για κινητές συσκευές περιλαμβάνει προσαρμοστικό heartbeat, μαζική επεξεργασία μηνυμάτων και υποστήριξη για λειτουργίες παρασκηνίου. Το PubNub SDK για iOS χρησιμοποιεί το Background Task API για διατήρηση της σύνδεσης όταν η εφαρμογή είναι ελαχιστοποιημένη (έως 30 δευτερόλεπτα τυπικού χρόνου παρασκηνίου). Για μεγαλύτερη εργασία παρασκηνίου, απαιτείται χρήση ειδοποιήσεων push.
Mobile Push Gateway — μηχανισμός αποστολής ειδοποιήσεων push μέσω του PubNub. Όταν ένα μήνυμα δημοσιεύεται σε ένα κανάλι, το PubNub καθορίζει αυτόματα ποιοι συνδρομητές είναι εκτός σύνδεσης και τους στέλνει ειδοποίηση push μέσω APNs (iOS) ή FCM (Android). Η διαμόρφωση γίνεται μία φορά στον πίνακα διαχείρισης — μετά από αυτό, όλα τα μηνύματα από το κανάλι αντιγράφονται αυτόματα στο κανάλι push. Σύμφωνα με την τεκμηρίωση του PubNub (2025), η πύλη επεξεργάζεται έως 10 000 ειδοποιήσεις push ανά δευτερόλεπτο.
Συχνές Ερωτήσεις
Το PubNub προσφέρει περισσότερα SDK (75+ πλατφόρμες), ενσωματωμένες λειτουργίες serverless και Stream Controller για επεξεργασία μηνυμάτων. Το Pusher είναι πιο απλό στη ρύθμιση, αλλά το PubNub δίνει μεγαλύτερο έλεγχο στη δρομολόγηση και τον μετασχηματισμό δεδομένων.
Το PubNub χρησιμοποιεί τον μηχανισμό at-least-once με αυτόματη επανάληψη σε σφάλματα. Κάθε μήνυμα έχει ένα μοναδικό timetoken για απαλοιφή διπλοτύπων. Τα μηνύματα αποθηκεύονται προσωρινά για 30 δευτερόλεπτα για συνδρομητές εκτός σύνδεσης.
Το δωρεάν πρόγραμμα περιλαμβάνει 100 ταυτόχρονες συνδέσεις και 1 εκατομμύριο μηνύματα τον μήνα. Τα επί πληρωμή προγράμματα ξεκινούν από $49/μήνα για 1000 ταυτόχρονες συνδέσεις με απεριόριστο αριθμό μηνυμάτων.
Ναι, το PubNub υποστηρίζει TLS 1.3 για όλες τις συνδέσεις και προαιρετική κρυπτογράφηση end-to-end στην πλευρά του πελάτη (AES-256) με διαχείριση κλειδιών μέσω PAM. Για επιχειρηματικούς πελάτες, διατίθεται η λειτουργία Cipher Key.
Το PubNub παρέχει SDK για 75+ πλατφόρμες, συμπεριλαμβανομένων JavaScript, Swift, Kotlin, Java, Dart, C#, Python, Ruby, Go, C++, PHP, Rust και Objective-C. Αυτό είναι το μεγαλύτερο οικοσύστημα μεταξύ των υπηρεσιών πραγματικού χρόνου.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης