Socket, Webhooks e Applicazioni Real-Time: quando il tempismo è tutto.

Real Time Application

di Luca Fernandez, Web Developer. 

 

Non è una novità che nel mondo del digitale tutto ormai si muova alla velocità della luce.

La necessità di rapidità e immediatezza delle informazioni è evidente in ogni ambito, non solo professionale ma ormai anche e soprattutto in quello privato.

Il bisogno di avere tutto e subito è più che allettante per chiunque, anche nelle cose più banali e quotidiane.

Ad esempio, quante volte navigando su internet si finisce su una pagina che ci mette ore a caricarsi? L’azione che tipicamente ne consegue è quella di uscire da quella pagina e cercarne un’altra che si presenti più reattiva e in breve tempo sul nostro schermo.

Questo vale soprattutto quando la navigazione avviene via smartphone, e lo dice anche una recente ricerca basata su dati Google: il 53% degli utenti mobile lascia la pagina se questa impiega più di 3 secondi a caricarsi! 

Quindi, ciò che cerchiamo deve essere disponibile immediatamente.

Per noi che “facciamo” digitale, è fondamentale quindi approcciare il nostro lavoro con risposte che si adattano a questo tipo di aspettative, offrendo soluzioni che siano sempre un passo avanti rispetto a ciò che normalmente è già presente in quel mare immenso che è il web.

 

Applicazioni Real-Time

Da un punto di vista prettamente tecnico, creare qualcosa che fornisca le informazioni che desideriamo nel momento stesso in cui le richiediamo vuol dire realizzare Applicazioni Real-Time.

Per creare un’Applicazione Real-Time serve innanzitutto definire un corretto rapporto Client-Server, per diminuire il più possibile i tempi di risposta.

Un paio di metodi che possono tornare utili sotto vari aspetti e su cui è bene focalizzarsi riguardano i Webhooks e le Socket.

 

Webhooks (client ← server)

I webhooks, letteralmente “uncini del web”,  sono notifiche HTTP, lanciate in seguito all’accadimento di un evento scatenante, inviate a un’applicazione o ad un altro sistema esterno. Sono a tutti gli effetti delle chiamate fatte ad un URL definito in fase di creazione del webhooks.

Queste chiamate (callback) servono ad alterare il comportamento di una pagina web o di un’applicazione e possono essere gestite e modificate da utenti di terze parti, non necessariamente da chi ha creato l’applicazione o la pagina web.

Sono quindi una sorta di push notification.

In molti contesti, risulta molto comodo e soprattutto utile concatenare più webhooks, in modo da scatenare più eventi consequenziali. Di solito questo avviene quando si desidera “provocare” aggiornamenti di sistema o per notificare bug e comportamenti insoliti a sistemi di tracciamento errori.

Questo metodo permette inoltre di evitare il polling e il long-polling.

 

Polling (request → response)

Nel caso del polling, il client invia una richiesta al server e continua incessantemente a inviare richieste per controllare che certe operazioni siano state completate o no. Questo è un procedimento dispendioso, che se possibile è meglio evitare.

Long Polling (request wait →  response)

Il long-polling, al contrario, crea un canale di comunicazione e invia anch’esso una prima richiesta, che viene messa in uno stato di “sospensione” (wait) finché il server non termina di elaborare tutti i task ad esso assegnati.

>Anche questo metodo ha diversi lati negativi: infatti, dovendo agire in maniera sincrona, non tutti i server riescono a gestire questo tipo di comunicazione; inoltre questi hanno un numero ben definito di “slot di richieste” che possono gestire, quindi è meglio non abusarne. Anche in questo caso, meglio evitare!

 

Polling Socket (client ←→ server)

Veniamo ora al punto focale: una Socket è una astrazione software che permette l’invio e la ricezione di dati tra due computer fisicamente separate creando dei canali di comunicazione.

Nella maggior parte dei casi questa comunicazione avviene tra un client e un server, piuttosto che da server a server, e in qualsiasi momento può essere chiusa da ambo le parti.

Socket locali e remoti, in comunicazione fra loro, formano una coppia (pair), composta da indirizzo e porta di client e server. Solitamente esistono API precise che permettono alle applicazioni di controllare e utilizzare le Socket.

Se un’applicazione ha bisogno di una comunicazione costante da entrambe le direzioni, questa è la soluzione migliore.

Ad oggi, una delle modalità di implementazione di questo sistema è offerto da un framework di sviluppo open source che sta diventando sempre più popolare grazie a molte sue qualità.

 

Si tratta di Socket.io, che è infatti un sistema veloce, intuitivo e facile da integrare su qualsiasi piattaforma.

Un esempio di come possa essere semplice implementare questo framework e di quali performance questa metodologia sia in grado di offrire, è quello di una App dedicata al mondo sportivo, nello specifico una App che riesce a mostrare, sul proprio smartphone, il punteggio di un partita di pallavolo e i cambiamenti della formazione dei giocatori in tempo reale, esattamente come sta avvenendo realmente sul campo di gioco.

Questa App, per chi volesse metterla alla prova, è un progetto già disponibile per Android.

 

Esempio Real-Time Application

Esempio Real-Time Application 2

Commenti ( 0 )

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *