Τα Webhooks και τα WebSockets είναι δύο τεχνολογίες ανάπτυξης ιστού που οι άνθρωποι συχνά συγχέουν. Πολλές σύγχρονες εφαρμογές Ιστού κάνουν χρήση τόσο των Webhooks όσο και των WebSockets. Αν και αρκετά διαφορετικά, τα Webhooks και WebSockets αντιμετωπίζουν και τα δύο την επικοινωνία σε εφαρμογές web.

Τι είναι λοιπόν τα Webhooks και τα WebSockets; Ποια είναι τα πράγματα που τους κάνουν να διαφέρουν;

Τι είναι τα Webhook και πώς λειτουργούν;

Μπορείτε να σκεφτείτε ένα Webhook ως ένα «αίτημα HTTP που ενεργοποιείται από συμβάντα». Τι σημαίνει αυτό? Το Webhook είναι μια ενέργεια επανάκλησης HTTP που συνήθως ενεργοποιείται από ένα συμβάν σε έναν διακομιστή. Δεν είναι μόνο αυτό, συνήθως στέλνει δεδομένα μέσω μιας προρυθμισμένης διεύθυνσης URL σε άλλο διακομιστή. Αυτό γεννά την ιδέα ότι τα Webhooks είναι ένα μέσο επικοινωνίας «διακομιστή σε διακομιστή».

Για να κατανοήσετε καλύτερα τον μηχανισμό λειτουργίας των Webhooks, σκεφτείτε μια εφαρμογή Ιστού που χρησιμοποιεί το API της Stripe για τη λήψη πληρωμών. Κάθε φορά που ένας πελάτης πραγματοποιεί μια πληρωμή, η Stripe λαμβάνει τα χρήματα, αλλά η εφαρμογή σας δεν έχει ιδέα. Εδώ μπαίνουν τα Webhooks. Σκεφτείτε την παρακάτω εικόνα:

instagram viewer

Το Stripe απαιτεί να παρέχετε μια διεύθυνση URL τελικού σημείου Webhook για την αποστολή των δεδομένων πληρωμής του πελάτη στον διακομιστή σας όταν ενεργοποιείται ένα νέο συμβάν πληρωμής. Στη συνέχεια, ο διακομιστής σας λαμβάνει τα δεδομένα, εκτελεί λειτουργίες σε αυτά και αποθηκεύει μόνιμα δεδομένα στη βάση δεδομένων.

Τι είναι τα WebSockets και πώς λειτουργούν;

Το WebSocket είναι ένα πρωτόκολλο που θα χρησιμοποιείτε συνήθως με JavaScript. Δημιουργεί ένα αμφίδρομο, επίμονο, αμφίδρομο κανάλι επικοινωνίας. Το κάνει σε ένα single σύνδεση μεταξύ δύο θυρών TCP από έναν πελάτη (πρόγραμμα περιήγησης) σε έναν διακομιστή. Η πιο δημοφιλής εφαρμογή του WebSockets είναι σε εφαρμογές συνομιλίας όπως το WhatsApp.

Ενώ τα Webhook βασίζονται σε HTTP (δηλαδή κάνουν χρήση του πρωτοκόλλου HTTP), το WebSocket είναι ένα ολόκληρο πρωτόκολλο από μόνο του που βασίζεται στο TCP, όπως και το HTTP. Τα WebSockets μπορούν να είναι πολύ ωφέλιμα όταν εργάζεστε σε εφαρμογές ροής δεδομένων διακομιστή-πελάτη χαμηλής καθυστέρησης.

Μπορείτε να επιτύχετε χαμηλό λανθάνοντα χρόνο με μια σύνδεση WebSocket επειδή παραμένει ανοιχτή μεταξύ των συναλλαγών, σε αντίθεση με το προεπιλεγμένο HTTP. Αυτό επιτρέπει στα δεδομένα να ρέουν απρόσκοπτα μεταξύ των δύο μερών.

Πριν από το WebSockets, οι προγραμματιστές χρησιμοποιούσαν διάφορες μεθόδους λήψης δεδομένων σε πραγματικό χρόνο μέσω HTTP. Αν και υπάρχουν εδώ και λίγο καιρό, υποφέρουν από περιορισμούς.

Για παράδειγμα, η παρατεταμένη ψηφοφορία απαιτεί από τον πελάτη να στέλνει πάντα ένα νέο αίτημα στον διακομιστή σε ένα καθορισμένο χρονικό διάστημα. Αυτό σημαίνει ότι όταν υπάρχουν νέα δεδομένα στον διακομιστή, τα επιστρέφει. Αλλά αν δεν υπάρχει, το αίτημα ουσιαστικά χάνεται.

Σε αντίθεση με τα Webhooks, οποιοδήποτε άκρο μιας σύνδεσης WebSocket μπορεί να στείλει δεδομένα στο άλλο. Αυτός είναι ένας λόγος για τον οποίο τα WebSockets προσφέρουν ένα τεράστιο πλεονέκτημα ταχύτητας, ειδικά όταν τα δεδομένα αποστέλλονται από τον διακομιστή στον πελάτη. Οι εφαρμογές που χρησιμοποιούν WebSockets θα πρέπει να επωφελούνται από χαμηλό λανθάνοντα χρόνο κατά την ανάκτηση δεδομένων από τον διακομιστή.

Μπορείτε επίσης να χρησιμοποιήσετε WebSockets μέσω TLS, όπως και το HTTP. Αυτό προστατεύει τα δεδομένα που μεταδίδετε, συμβάλλοντας στον μετριασμό επιθέσεις άνθρωπος στη μέση. Ακόμη και μια επίμονη σύνδεση θα παραμείνει ασφαλής με αυτήν την προσέγγιση. Δεν θα χρειάζεται να ανησυχείτε μήπως οι εισβολείς κλέψουν δεδομένα ή ότι η επικοινωνία τα καταστρέψει.

Πότε πρέπει να χρησιμοποιείτε τα Webhooks;

Τα Webhooks και τα WebSockets στοχεύουν στην εφαρμογή καλύτερων μέσων επικοινωνίας σε πραγματικό χρόνο μέσω του Ιστού. Ωστόσο, το κάνουν με εντελώς διαφορετικούς τρόπους. Συχνά μπορεί να είναι πρόκληση να αποφασίσετε ποια από αυτές τις δύο τεχνολογίες θα πρέπει να χρησιμοποιήσετε στην εφαρμογή σας. Θα πρέπει να δώσετε ιδιαίτερη προσοχή στα δυνατά και αδύνατα σημεία τους για να δείτε ποια ανταποκρίνεται καλύτερα στις απαιτήσεις σας.

Πότε λοιπόν πρέπει να επιλέξετε Webhooks αντί WebSockets;

  • Όταν καταναλώνετε ένα API που δεν σας ανήκει. Εξετάστε το παράδειγμα Stripe από την προηγούμενη απεικόνιση Webhook. Το Stripe είναι πάροχος υπηρεσιών πληρωμών και η εφαρμογή σας μπορεί να βασίζεται μόνο στο API του. Δεν έχετε κανέναν έλεγχο στο Stripe, επομένως δεν μπορείτε να δημιουργήσετε έναν διακομιστή WebSocket στο τέλος του. Σε περιπτώσεις όπως αυτή, θα πρέπει να χρησιμοποιήσετε το Webhooks.
  • Εάν η εφαρμογή σας είναι διακομιστής που χρειάζεται να επικοινωνεί με άλλο διακομιστή, είναι καλύτερο να χρησιμοποιήσετε το Webhooks. Αυτό είναι το ιδανικό σύστημα επικοινωνίας «διακομιστή σε διακομιστή».
  • Τα webhook δεν είναι αμφίδρομα ή μόνιμα. Θα πρέπει να χρησιμοποιείτε τα Webhook μόνο όταν η εφαρμογή σας δεν αναμένει δεδομένα απόκρισης στο ίδιο κανάλι.
  • Είναι επίσης αξιοσημείωτο ότι τα Webhook είναι ο ιδανικός τρόπος για λειτουργίες διακομιστή που εκτελούνται ως λειτουργίες χωρίς διακομιστή. Στα παραδείγματα περιλαμβάνονται οι λειτουργίες AWS Lambda και Google cloud.

Μπορείτε να πειραματιστείτε με τα Webhooks webhook.site. Αυτός ο ιστότοπος σάς επιτρέπει να δείτε πώς θα μοιάζουν τα δεδομένα που στέλνει ένα Webhook στην εφαρμογή σας. Είναι πολύ χρήσιμο να κατανοήσετε τη φύση της επικοινωνίας ενός Webhook προτού προσπαθήσετε να εφαρμόσετε ένα τελικό σημείο στην εφαρμογή σας.

Πότε πρέπει να χρησιμοποιείτε τα WebSockets;

Οι εφαρμογές σε πραγματικό χρόνο, τα συστήματα ειδοποιήσεων και τα συστήματα ζωντανής κοινής χρήσης δεδομένων είναι μερικές κοινές εφαρμογές των WebSockets. Έχοντας υπόψη ότι με τα WebSockets, το κανάλι σύνδεσης πρέπει να είναι πάντα ανοιχτό, αυτό το πρωτόκολλο θα πρέπει να χρησιμοποιείται μόνο όταν το κόστος αξίζει τον κόπο.

  • Θα πρέπει να χρησιμοποιείτε το WebSockets όταν η εφαρμογή σας ανταλλάσσει συνεχώς δεδομένα μεταξύ του πελάτη και του διακομιστή. Για παράδειγμα, σε μια ζωντανή εφαρμογή κοινής χρήσης τοποθεσίας, η τοποθεσία ενός χρήστη ενημερώνεται συνεχώς τόσο στον διακομιστή όσο και στον πελάτη καθώς μετακινούνται. Τα WebSockets το καθιστούν δυνατό.
  • Σε εφαρμογές επικοινωνίας πολυμέσων όπως το WhatsApp, το WebSocket είναι το ιδανικό πρωτόκολλο επικοινωνίας. Επιτρέπει την πολύ γρήγορη αμφίδρομη ανταλλαγή δεδομένων, η οποία είναι κεντρική σε αυτού του είδους τις εφαρμογές.
  • Θα πρέπει επίσης να χρησιμοποιείτε το WebSockets σε εφαρμογές που υλοποιούν τροφοδοσίες σε πραγματικό χρόνο, όπως το Livescore. Αυτός ο ιστότοπος μοιράζεται ζωντανές ενημερώσεις αγώνων ποδοσφαίρου όπως συμβαίνουν σε πραγματικό χρόνο. Αλλά το κάνει χωρίς να χρειάζεται να υποβάλει νέα αιτήματα ή να σας ζητήσει να ανανεώσετε το πρόγραμμα περιήγησής σας.
  • Άλλες περιπτώσεις όπου θα πρέπει να χρησιμοποιήσετε το WebSockets περιλαμβάνουν εφαρμογές ζωντανής ροής βίντεο/ήχου, συστήματα ζωντανών ειδοποιήσεων και παιχνίδια για πολλούς παίκτες σε πραγματικό χρόνο. Είναι επίσης χρήσιμα σε εφαρμογές συλλογικής επεξεργασίας όπως τα Έγγραφα Google, το Notion κ.λπ.

Τα Webhook και τα WebSockets είναι διαφορετικά

Είναι σαφές ότι, αν και τα Webhooks και WebSockets επιλύουν παρόμοια προβλήματα, δεν είναι τα ίδια και το καθένα έχει τις δικές του συγκεκριμένες περιπτώσεις χρήσης. Τα webhook είναι μονής κατεύθυνσης, που ενεργοποιούνται από συμβάντα, βασισμένες στο πρωτόκολλο HTTP. Η τεχνολογία WebSocket είναι ένα αυτόνομο πρωτόκολλο, το οποίο επιτρέπει την αμφίδρομη ανταλλαγή δεδομένων χωρίς αιτήματα.

Είναι σημαντικό να προσδιορίζετε πάντα την ανάγκη σας όταν δημιουργείτε μια εφαρμογή για να αποφύγετε τη σπατάλη πόρων. Σε ορισμένες περιπτώσεις, θα πρέπει να προτιμάτε τα Webhooks επειδή τα WebSockets μπορεί μερικές φορές να είναι απαγορευτικά από πλευράς κόστους. Βεβαιωθείτε ότι τα χρησιμοποιείτε μόνο όταν είναι απαραίτητο.