In questa live affronteremo il tema dei WebSocket, il protocollo che permette a client e server di parlarsi in tempo reale su un unico canale aperto e in entrambe le direzioni.

Il punto di partenza è un problema concreto e frequente: il ciclo request/response di HTTP funziona benissimo fino a quando è il client a dover essere informato di qualcosa, ma questa soluzione va in crisi quando è il server ad avere una notizia da dare, come un nuovo messaggio in una chat, un valore aggiornato in una dashboard, una mossa dell’avversario in una partita multiplayer.

In questi frangenti, interrogare il server a intervalli regolari, ossia accontentadosi di fare polling, è un metodo dispendioso, oltreché in ritardo di qualche secondo, pena il possibile sovraccarico del server e delle sue risorse.

Da qui nasce il confronto con le strade disponibili per risolvere questo problema, **dall’HTTP classico all’uso dei Server-Sent Events (SSE) fino ai WebSocket, un vero e proprio canale bidirezionale, full-duplex, aperto tramite un handshake HTTP che si conclude con uno switch di protocollo.

Approfondiremo assieme quando questa soluzione serve davvero e quando invece possiamo restare su soluzioni più semplici ed “economiche” (in senso lato).

Passeremo poi dalla teoria alla pratica, implementando un server WebSocket con Delphi 13 e la libreria DelphiMVCFramework di Daniele Teti, che affianca al normale motore REST un secondo listener TCP dedicato al protocollo WSS.

Argomenti e tecnologie trattate

  • WebSocket (protocollo real-time, RFC 6455)
  • Delphi 13 Florence
  • Libreria DelphiMVCFramework
  • Sviluppo backend real-time

Prerequisiti

Nessun prerequisito richiesto. La sessione parte dalle basi del protocollo WebSocket ed è pensata anche per chi non ha mai usato DelphiMVCFramework.