Γιατί εισήχθησαν τα γεγονότα server-sent στο HTML5;
sobes.tech AI
Απάντηση από AI
Τα γεγονότα που αποστέλλονται από τον διακομιστή (SSE) εισήχθησαν στην HTML5 για τη μετάδοση δεδομένων από τον διακομιστή στον πελάτη σε μία κατεύθυνση, σε πραγματικό χρόνο, μέσω μιας σύνδεσης HTTP. Αυτό επιτρέπει την λήψη ενημερώσεων από τον διακομιστή χωρίς να χρειάζεται ο πελάτης να στέλνει συνεχώς αιτήματα (polling). Τα βασικά πλεονεκτήματα σε σύγκριση με άλλες τεχνολογίες:
- Απλότητα: Χρησιμοποιούν μια κανονική σύνδεση HTTP, που διευκολύνει την ενσωμάτωση με υπάρχουσες τεχνολογίες και υποδομές web.
- Αποτελεσματικότητα: Επιτρέπουν στον διακομιστή να στέλνει δεδομένα όταν είναι έτοιμα, μειώνοντας το φόρτο στο δίκτυο και τον διακομιστή σε σύγκριση με το συχνό polling.
- Αυτόματη επανασύνδεση: Ο περιηγητής προσπαθεί αυτόματα να επανασυνδεθεί σε περίπτωση διακοπής.
- Ενσωματωμένη επεξεργασία: Το API
EventSourceστον περιηγητή παρέχει μια απλή διεπαφή για εργασία με γεγονότα και δεδομένα.
Παράδειγμα χρήσης στην πλευρά του πελάτη:
// Δημιουργία νέου αντικειμένου EventSource, καθορίζοντας το URL του διακομιστή για SSE
const eventSource = new EventSource('/updates');
// Επεξεργασία του γεγονότος 'message' - λήψη δεδομένων από τον διακομιστή
eventSource.onmessage = function(event) {
// Εμφάνιση των ληφθέντων δεδομένων στην κονσόλα
console.log('Νέα δεδομένα από τον διακομιστή:', event.data);
};
// Επεξεργασία σφαλμάτων σύνδεσης
eventSource.onerror = function(error) {
console.error('Παρουσιάστηκε σφάλμα:', error);
};
Στον διακομιστή, η απάντηση πρέπει να έχει τον τύπο MIME text/event-stream και να διαμορφώνεται ως εξής:
data: Αυτό είναι το πρώτο γραμμή δεδομένων\n
data: Αυτό είναι η δεύτερη γραμμή δεδομένων\n\n
Κάθε μήνυμα τελειώνει με δύο χαρακτήρες αλλαγής γραμμής (\n\n). Κάθε γραμμή δεδομένων ξεκινά με data: . Μπορεί να υπάρχουν και άλλα πεδία, όπως event: για τον τύπο του γεγονότος ή id: για τον αναγνωριστικό του μηνύματος.
Τα γεγονότα που αποστέλλονται από τον διακομιστή είναι μια καλή επιλογή για σενάρια όπου ο διακομιστής πρέπει να στέλνει ροή ενημερώσεων στον πελάτη, όπως ειδοποιήσεις, ροές ειδήσεων, τιμές μετοχών ή αποτελέσματα μακροχρόνιων διαδικασιών. Είναι πιο απλά στην υλοποίηση από τα WebSockets για μονοκατευθυντική επικοινωνία.