Articles

Utilizzo di WebSockets con Node.js

Il Bootcamp JavaScript Full-Stack del 2021 è ora aperto alle iscrizioni!

I WebSockets sono un’alternativa alla comunicazione HTTP nelle applicazioni web.

Offrono un canale di comunicazione bidirezionale di lunga durata tra client e server.

Una volta stabilito, il canale viene mantenuto aperto, offrendo una connessione molto veloce con bassa latenza e overhead.

Il supporto dei browser per i WebSockets

I WebSockets sono supportati da tutti i browser moderni.

Supporto dei browser per i WebSockets

Come i WebSockets differiscono da HTTP

HTTP è un protocollo molto diverso, e anche un modo diverso di comunicare.

HTTP è un protocollo richiesta/risposta: il server restituisce alcuni dati quando il client li richiede.

Con WebSockets:

  • il server può inviare un messaggio al client senza che il client richieda esplicitamente qualcosa
  • il client e il server possono parlare tra loro simultaneamente
  • poco overhead di dati deve essere scambiato per inviare messaggi. Questo significa una comunicazione a bassa latenza.

I WebSockets sono ottimi per comunicazioni in tempo reale e di lunga durata.

HTTP è ottimo per lo scambio occasionale di dati e le interazioni iniziate dal client.

HTTP è molto più semplice da implementare, mentre i WebSockets richiedono un po’ più di overhead.

Secured WebSockets

Utilizzare sempre il protocollo sicuro e criptato per WebSockets, wss://.

ws:// si riferisce alla versione non sicura di WebSockets (la http:// di WebSockets), e dovrebbe essere evitata per ovvie ragioni.

Crea una nuova connessione WebSockets

const url = 'wss://myserver.com/something'const connection = new WebSocket(url)

connection è un oggetto WebSocket.

Quando la connessione viene stabilita con successo, viene sparato l’evento open.

Ascoltatelo assegnando una funzione di callback alla proprietà onopen dell’oggetto connection:

connection.onopen = () => { //...}

Se c’è qualche errore, la funzione onerror callback viene sparata:

connection.onerror = error => { console.log(`WebSocket error: ${error}`)}

Inviare dati al server usando WebSockets

Una volta aperta la connessione, puoi inviare dati al server.

Lo si può fare comodamente all’interno della funzione di callback onopen:

connection.onopen = () => { connection.send('hey')}

Ricevere dati dal server usando i WebSockets

Ascolta con una funzione di callback su onmessage, che viene chiamata quando l’evento message viene ricevuto:

connection.onmessage = e => { console.log(e.data)}

Implementare un server WebSockets in Node.js

ws è una popolare libreria WebSockets per Node.js.

La useremo per costruire un server WebSockets. Può anche essere usata per implementare un client e usare WebSockets per comunicare tra due servizi di backend.

Si installa facilmente usando

yarn inityarn add ws

Il codice da scrivere è molto poco:

const WebSocket = require('ws')const wss = new WebSocket.Server({ port: 8080 })wss.on('connection', ws => { ws.on('message', message => { console.log(`Received message => ${message}`) }) ws.send('ho!')})

Questo codice crea un nuovo server sulla porta 8080 (la porta predefinita per i WebSockets), e aggiunge una funzione di callback quando viene stabilita una connessione, inviando ho! al client e registrando i messaggi ricevuti.

Vedi un esempio dal vivo su Glitch

Ecco un esempio dal vivo di un server WebSockets: https://glitch.com/edit/#!/flavio-websockets-server-example

Ecco un client WebSockets che interagisce con il server: https://glitch.com/edit/#!/flavio-websockets-client-example

Scaricate il mio manuale gratuito su Node.js

Il Bootcamp JavaScript Full-Stack del 2021 è ora aperto per le iscrizioni fino a martedì prossimo! Non perdere questa opportunità, iscriviti OGGI!

Altri tutorial su node:

  • le dipendenze di npm e devDependencies
  • Come usare Sequelize per interagire con PostgreSQL
  • Una breve storia di Node.js
  • Usare WebSockets con Node.js
  • Come ottenere sia il parsed body che il raw body in Express
  • Come usare promises e await con le funzioni basate su callback di Node.js
  • Come installare Node.js
  • Un’introduzione al gestore di pacchetti npm
  • Interagire con le API di Google Analytics usando Node.js

Lascia una risposta

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