WebSocket in Delphi con DelphiMVCFramework
Dal confronto con soluzioni HTTP e SSE (Server-Sent Events) fino a un server WebSocket vero e proprio, costruito con DelphiMVCFramework
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.
Cosa faremo durante la live
- HTTP vs SSE vs WebSocket: perché il polling non basta, cosa distingue le tre strade e come si passa da HTTP a WebSocket con l’handshake di aggiornamento del protocollo.
- Setup del server WebSocket: un secondo listener TCP accanto al motore REST, su una porta propria, e la sua vita parallela a quella del server HTTP.
- Il ciclo di vita di una connessione: connessione, messaggi, disconnessione, e da dove arriva l’identità del client.
- Comunicazione uno-a-uno e broadcast: invio a un singolo client, a tutti, o a un gruppo di client.
- Demo pratica: un’applicazione WebSocket funzionante, costruita insieme, con la scelta finale del caso d’uso affidata ai suggerimenti in chat.
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.
