Corso di Raku / Programmazione funzionale, concorrente, reattiva e web / Programmazione web / Un semplice server HTTP

Restare in ascolto di connessioni

Per fare da server, crea un socket in modalità di ascolto con l’argomento :listen, indicando l’indirizzo e la porta su cui ascoltare:

my $listener = IO::Socket::INET.new(
    :listen,
    :localhost('127.0.0.1'),
    :localport(8080),
);

:localhost('127.0.0.1') ascolta sulla tua macchina, e :localport(8080) è la porta a cui i client devono connettersi. Il socket sta ora aspettando, ma nessun client è ancora arrivato.

Per prendere la connessione in arrivo successiva, chiama .accept. Blocca finché un client non si connette, poi restituisce un socket fresco che rappresenta quella singola conversazione:

my $conn = $listener.accept;
say 'a client connected';

Il $listener continua ad ascoltare altri client, mentre $conn è il tuo canale per parlare con questo in particolare. Un server vero chiama .accept in un ciclo, gestendo ogni client man mano che arriva.

Questi esempi girano sulla tua macchina; raggiungili da un browser o da un altro programma a 127.0.0.1:8080.

Quindi un server è solo un socket girato al contrario: invece di :host/:port per chiamare fuori, dai :listen con :localhost/:localport per aspettare le chiamate in entrata.

Pratica

Risolvi 1 quiz sul contenuto di questo argomento.

Un semplice server HTTP   |   Quiz — In ascolto


💪 Oppure vai direttamente all’esercizio di questa sezione.