Implementazione di un dispatcher ed esempio pratico

Vediamo come implementare un dispatcher per le applicazioni Node.JS per creare un webserver evoluto.

Implementazione

Dopo aver chiarito gli aspetti relativi alla sintassi JavaScript, vediamo il codice completo del nostro dispatcher. Per evitare ogni ambiguità riportiamo per intero il codice complessivo della classe HttpDispatcher.

rispetto alla trattazione di pagina precedente abbiamo introdotto due novità: la prima è che il metodo showList adesso viene aggiunto tramite prototype, e non più direttamente nella definizione della classe. Questo approccio è del tutto equivalente a quello di pagina precedente: lo abbiamo scelto solo a scopo didattiche, per da sottolineare che entrambi gli approcci sono ugualmente validi. La seconda novità è rappresentata dall’esportazione del modulo. Invece di spostare una singola funzione (o un elenco di funzioni) come fatto nelle lezioni precedenti, questa volta esportiamo un’istanza dell’oggetto. Ciò significa che quando useremo la funzione require per importare il modulo, di fatto ci verrà ritornato un’istanza della classe HttpDispatcher.

Vediamo finalmente il codice che utilizza il modulo appena creato:

dove chiaramente il file “module-02” conterrà il codice della classe HttpDispatcher. Il codice qui sopra è invece quello del server, che eseguiremo normalmente, lanciandolo da riga di comando (ad esempio node server.js).

Il risultato sarà il seguente: quando lanciamo il server, tramite l’istruzione addListner registriamo la callback che si occupa di gestire le richieste rivolte verso un URL del tipo “/my_page”. La callback è quella scritta qui sopra, che si limita a rispondere con messaggio di testo (Hello World!). Subito dopo invochiamo il metodo di introspezione (cioè showList), per verificare di aver registrato il listener (che non sarà necessario nell’ambiente di produzione).

Il codice complessivo (server più modulo) non ha molte applicazioni pratiche, ma è un ottimo esercizio. Consideriamo di copiare il codice nell’editor che più ci piace e provare ad eseguirlo, per capire come funziona. Eventualmente, se ci sentiamo coraggiosi, troviamo anche a registrare qualche nuovo listeners. Prendere confidenza con questo pattern ci servirà per capire la prossima lezione, nella quale useremo il codice qui discusso per realizzare un dispatcher completo e funzionante.