﻿1
00:00:01,450 --> 00:00:05,930
‫Questo video è un altro davvero emozionante, perché

2
00:00:05,930 --> 00:00:08,970
‫ora creeremo il nostro primo

3
00:00:08,970 --> 00:00:13,750
‫vero server web in grado di accettare richieste

4
00:00:13,750 --> 00:00:15,973
‫e inviare risposte.

5
00:00:17,930 --> 00:00:22,930
‫E il primo passo è includere un altro pacchetto o un

6
00:00:22,950 --> 00:00:24,223
‫altro modulo,

7
00:00:27,470 --> 00:00:29,533
‫e questo si chiama http.

8
00:00:33,530 --> 00:00:36,280
‫Quindi stiamo usando di nuovo

9
00:00:36,280 --> 00:00:41,280
‫la funzione require, e poi richiediamo il modulo http integrato, e

10
00:00:41,380 --> 00:00:45,260
‫questo è quello che ci dà capacità di rete

11
00:00:45,260 --> 00:00:48,423
‫come la costruzione di un server http.

12
00:00:50,264 --> 00:00:52,980
‫Ora, in realtà commentiamo questo codice

13
00:00:52,980 --> 00:00:55,863
‫qui in modo che non ci ostacoli.

14
00:00:59,980 --> 00:01:04,133
‫Quindi creiamo una specie di divisore qui.

15
00:01:07,520 --> 00:01:09,723
‫Quindi questo è

16
00:01:12,730 --> 00:01:17,730
‫archiviato e questo è per il server.

17
00:01:18,030 --> 00:01:20,930
‫E ora, per costruire il nostro server,

18
00:01:20,930 --> 00:01:22,900
‫dobbiamo fare due cose.

19
00:01:22,900 --> 00:01:24,980
‫Per prima cosa creiamo un

20
00:01:24,980 --> 00:01:27,820
‫server, quindi avviamo il server in modo

21
00:01:27,820 --> 00:01:31,033
‫da poter effettivamente ascoltare le richieste in arrivo.

22
00:01:32,840 --> 00:01:37,680
‫Usiamo il nostro modulo http e proprio come prima abbiamo usato

23
00:01:37,680 --> 00:01:40,760
‫un metodo che si trova su quell'oggetto.

24
00:01:40,760 --> 00:01:43,283
‫Proprio come abbiamo fatto con il modulo fs.

25
00:01:44,120 --> 00:01:46,530
‫Quindi, http. createServer e

26
00:01:50,440 --> 00:01:54,000
‫create server accetteranno una funzione di callback, che verrà

27
00:01:54,000 --> 00:01:56,130
‫attivata ogni volta che una

28
00:01:56,130 --> 00:01:58,870
‫nuova richiesta raggiunge il nostro server.

29
00:01:58,870 --> 00:02:01,240
‫E questa funzione di callback

30
00:02:01,240 --> 00:02:05,080
‫ottiene l'accesso a due variabili molto importanti e fondamentali.

31
00:02:05,080 --> 00:02:08,763
‫È la variabile di richiesta e una variabile di risposta.

32
00:02:09,850 --> 00:02:12,373
‫E un po' di più su di loro in un secondo.

33
00:02:13,670 --> 00:02:15,293
‫Quindi, richiesta e

34
00:02:18,510 --> 00:02:20,630
‫risposta, quindi tutto ciò che

35
00:02:20,630 --> 00:02:23,890
‫vogliamo fare ora è inviare effettivamente una risposta

36
00:02:23,890 --> 00:02:26,420
‫al client e lo facciamo con res. che è questo oggetto qui, questo oggetto risposta, . fine, e poi 'Ciao

37
00:02:26,420 --> 00:02:30,763
‫dal server! '. fine, e poi 'Ciao dal server! '.

38
00:02:32,690 --> 00:02:33,547
‫Quindi questa è la risposta che invieremo indietro.

39
00:02:33,547 --> 00:02:36,850
‫Quindi di nuovo, ogni

40
00:02:37,780 --> 00:02:42,740
‫volta che una nuova richiesta raggiunge il nostro server, questa funzione di callback qui verrà

41
00:02:42,740 --> 00:02:46,720
‫chiamata e la funzione di callback avrà accesso all'oggetto richiesta che contiene

42
00:02:46,720 --> 00:02:49,910
‫tutti i tipi di cose come l'URL della richiesta

43
00:02:49,910 --> 00:02:51,998
‫e un sacco di altre cose.

44
00:02:51,998 --> 00:02:55,780
‫D'altra parte, questo oggetto di risposta

45
00:02:55,780 --> 00:03:00,680
‫qui ci offre molti strumenti fondamentalmente per gestire

46
00:03:00,680 --> 00:03:03,340
‫la risposta, quindi per

47
00:03:03,340 --> 00:03:05,880
‫inviare la risposta.

48
00:03:05,880 --> 00:03:07,820
‫Il più semplice è. end, e questa fine qui, la

49
00:03:07,820 --> 00:03:10,860
‫denominazione di questo metodo avrà un po' più senso

50
00:03:10,860 --> 00:03:14,200
‫un po' più tardi.

51
00:03:14,200 --> 00:03:18,200
‫Per ora, sappi solo che questo è il modo più semplice per inviare

52
00:03:18,200 --> 00:03:21,060
‫una risposta molto, molto semplice in questo caso.

53
00:03:21,060 --> 00:03:24,270
‫Quindi è davvero tutto ciò che dobbiamo

54
00:03:24,270 --> 00:03:28,493
‫fare per inviare una risposta in testo semplice quando

55
00:03:29,630 --> 00:03:31,840
‫arriva una determinata richiesta.

56
00:03:31,840 --> 00:03:34,810
‫Ora, se sei un po' confuso su tutti

57
00:03:34,810 --> 00:03:36,863
‫questi termini, come richiesta

58
00:03:37,730 --> 00:03:41,060
‫in arrivo, o invio di risposte, o anche sul

59
00:03:41,060 --> 00:03:44,950
‫motivo per cui abbiamo effettivamente richieste e risposte qui sul

60
00:03:44,950 --> 00:03:48,220
‫nostro server, non preoccuparti, perché abbiamo un'intera lezione in

61
00:03:48,220 --> 00:03:51,450
‫arrivo su come funziona il web dove parleremo

62
00:03:51,450 --> 00:03:54,000
‫del modello client-server e di come

63
00:03:54,000 --> 00:03:56,660
‫funzionano le applicazioni di rete in generale.

64
00:03:56,660 --> 00:04:00,430
‫Ancora una volta, in questa sezione il mio obiettivo

65
00:04:00,430 --> 00:04:04,260
‫principale è mostrarti tutte le cose e farle funzionare

66
00:04:04,260 --> 00:04:06,880
‫davvero, e poi la teoria seguirà

67
00:04:06,880 --> 00:04:09,330
‫un po' più tardi.

68
00:04:09,330 --> 00:04:11,260
‫Questa è la filosofia che

69
00:04:11,260 --> 00:04:13,793
‫ho usato in tutti gli altri miei corsi,

70
00:04:14,950 --> 00:04:16,610
‫e ha funzionato molto

71
00:04:16,610 --> 00:04:20,450
‫bene, quindi credo che sia una buona cosa farlo anche qui.

72
00:04:20,450 --> 00:04:22,410
‫Ad ogni modo, la creazione di

73
00:04:22,410 --> 00:04:24,390
‫un server era la prima parte, e

74
00:04:24,390 --> 00:04:28,100
‫ora la seconda parte consiste nell'ascoltare effettivamente le richieste in arrivo dal client.

75
00:04:28,100 --> 00:04:30,800
‫Ora, per farlo, abbiamo effettivamente bisogno di salvare

76
00:04:30,800 --> 00:04:33,633
‫il risultato di questo createServer qui in una nuova variabile.

77
00:04:34,880 --> 00:04:39,690
‫Quindi, di solito lo chiamiamo server, quindi server è

78
00:04:39,690 --> 00:04:44,203
‫il risultato di questo metodo createServer qui.

79
00:04:45,620 --> 00:04:47,803
‫Quindi creerà un server,

80
00:04:49,840 --> 00:04:54,840
‫e ora usiamo quel server e su quello possiamo chiamare listen.

81
00:04:55,720 --> 00:04:59,580
‫Listen accetta un paio di parametri, il primo è

82
00:05:00,730 --> 00:05:03,620
‫la porta e di solito la

83
00:05:03,620 --> 00:05:07,250
‫porta che usiamo in Note è, ad esempio, 8000.

84
00:05:07,250 --> 00:05:10,060
‫Ma vedrai altri numeri

85
00:05:10,060 --> 00:05:13,660
‫come 3000, 80 o qualcosa del genere.

86
00:05:13,660 --> 00:05:16,270
‫E nel caso ti stia chiedendo cosa

87
00:05:16,270 --> 00:05:19,850
‫sia effettivamente una porta, beh, non ha molta importanza, ma

88
00:05:19,850 --> 00:05:22,890
‫tutto ciò che devi sapere è fondamentalmente un sottoindirizzo

89
00:05:22,890 --> 00:05:24,870
‫su un determinato host,

90
00:05:24,870 --> 00:05:27,250
‫e l'host è ciò che specifichiamo dopo.

91
00:05:27,250 --> 00:05:30,540
‫In realtà non è necessario specificarlo e quindi

92
00:05:30,540 --> 00:05:33,453
‫utilizzeremo per impostazione predefinita un host locale,

93
00:05:34,400 --> 00:05:36,410
‫ma possiamo effettivamente specificarlo

94
00:05:36,410 --> 00:05:39,000
‫anche sull'host locale in modo esplicito.

95
00:05:39,000 --> 00:05:42,140
‫Quindi, l'host locale di solito ha questo indirizzo come predefinito

96
00:05:42,140 --> 00:05:44,680
‫e l'host locale indica semplicemente il computer corrente.

97
00:05:44,680 --> 00:05:49,680
‫Quindi il computer su cui è attualmente in esecuzione il programma.

98
00:05:50,190 --> 00:05:53,390
‫E ancora, questo è

99
00:05:53,390 --> 00:05:57,920
‫l'indirizzo IP standard per quell'host locale.

100
00:05:57,920 --> 00:06:00,680
‫Quindi questo qui inizierà ad ascoltare le richieste in arrivo.

101
00:06:00,680 --> 00:06:02,133
‫Quindi fondamentalmente avviando il server.

102
00:06:03,420 --> 00:06:07,830
‫E come argomento opzionale possiamo anche passare una funzione

103
00:06:07,830 --> 00:06:10,233
‫di callback, che

104
00:06:11,095 --> 00:06:13,550
‫verrà eseguita non appena il

105
00:06:13,550 --> 00:06:16,360
‫server inizia effettivamente ad ascoltare.

106
00:06:16,360 --> 00:06:19,110
‫Quindi qui è abbastanza normale visualizzare semplicemente un messaggio che

107
00:06:19,110 --> 00:06:20,893
‫il server è stato avviato.

108
00:06:22,060 --> 00:06:27,060
‫Quindi diciamo ascoltando le richieste sulla porta 8000.

109
00:06:27,470 --> 00:06:30,350
‫E ora tutto ciò che dobbiamo fare è

110
00:06:30,350 --> 00:06:33,947
‫effettivamente andare a questo URL sul nostro computer sulla porta 8000.

111
00:06:40,037 --> 00:06:42,830
‫Ora, prima di poterlo

112
00:06:42,830 --> 00:06:47,320
‫fare, ovviamente, dobbiamo eseguire l'applicazione Note, quindi

113
00:06:47,320 --> 00:06:48,860
‫note index. js, e qui abbiamo il nostro lock.

114
00:06:48,860 --> 00:06:51,930
‫Quindi ascoltando la richiesta sulla porta 8000.

115
00:06:51,930 --> 00:06:56,560
‫E vedi che l'app

116
00:06:56,560 --> 00:06:59,803
‫continua a funzionare, quindi prima si fermava sempre

117
00:07:00,680 --> 00:07:03,590
‫subito, quindi ha fatto il suo lavoro

118
00:07:03,590 --> 00:07:06,090
‫e poi è uscito dall'applicazione.

119
00:07:06,090 --> 00:07:08,270
‫In questo momento non lo fa.

120
00:07:08,270 --> 00:07:10,500
‫Ciò è dovuto a qualcosa chiamato

121
00:07:10,500 --> 00:07:12,890
‫ciclo di eventi di cui parleremo un

122
00:07:12,890 --> 00:07:15,770
‫po' più avanti in un'altra sezione di questo corso.

123
00:07:15,770 --> 00:07:17,920
‫Ma, indipendentemente dalle ragioni tecniche di

124
00:07:17,920 --> 00:07:20,270
‫ciò, è ovvio che l'app non può davvero

125
00:07:20,270 --> 00:07:23,740
‫uscire subito, perché in tal caso non potremmo ricevere nuove richieste.

126
00:07:23,740 --> 00:07:27,600
‫Quindi, quando avviamo un server, Note non può

127
00:07:27,600 --> 00:07:31,513
‫semplicemente uscire dal processo, quindi esci dal programma,

128
00:07:32,550 --> 00:07:34,290
‫perché l'intero

129
00:07:34,290 --> 00:07:37,410
‫obiettivo è attendere l'arrivo delle richieste.

130
00:07:37,410 --> 00:07:40,790
‫Quindi questo è quello che ti mostrerò dopo.

131
00:07:40,790 --> 00:07:43,523
‫Per ora, apriamo solo l'indirizzo IP sulla porta 8000.

132
00:07:46,050 --> 00:07:48,650
‫E per questo usiamo i due punti e poi il numero di porta.

133
00:07:48,650 --> 00:07:53,650
‫Quindi, questo è l'host, che è l'host locale, i due

134
00:07:55,450 --> 00:07:59,850
‫punti e quindi il numero di porta.

135
00:07:59,850 --> 00:08:02,860
‫Premi invio e ci siamo.

136
00:08:02,860 --> 00:08:05,083
‫Quindi, ciao dal server!

137
00:08:06,090 --> 00:08:08,340
‫E quindi sì, funziona davvero.

138
00:08:08,340 --> 00:08:11,320
‫Hai un vero server web in esecuzione sul

139
00:08:11,320 --> 00:08:13,370
‫tuo computer usando NoteJS, congratulazioni.

140
00:08:13,370 --> 00:08:17,350
‫Quindi torniamo qui e analizziamo di nuovo cosa è successo qui.

141
00:08:17,350 --> 00:08:20,880
‫Abbiamo creato il nostro server, utilizzando createServer

142
00:08:20,880 --> 00:08:25,880
‫e passato una funzione di callback che viene eseguita ogni

143
00:08:27,220 --> 00:08:30,980
‫volta che una nuova richiesta colpisce il server,

144
00:08:30,980 --> 00:08:33,260
‫quindi abbiamo iniziato ad

145
00:08:33,260 --> 00:08:36,620
‫ascoltare le richieste in arrivo sull'IP dell'host

146
00:08:36,620 --> 00:08:39,820
‫locale e quindi sulla porta 8000.

147
00:08:39,820 --> 00:08:43,577
‫Una volta che tutto questo è stato eseguito, abbiamo effettivamente eseguito

148
00:08:43,577 --> 00:08:45,440
‫la richiesta premendo quell'URL.

149
00:08:46,700 --> 00:08:50,840
‫Quindi fondamentalmente colpendo l'host locale sulla porta 8000.

150
00:08:50,840 --> 00:08:52,840
‫Quindi, sotto il

151
00:08:52,840 --> 00:08:56,620
‫cofano di NoteJS è stato generato un evento

152
00:08:56,620 --> 00:09:01,460
‫di cui, ancora una volta, parleremo un po' più avanti.

153
00:09:01,460 --> 00:09:03,230
‫Ma ciò che conta qui è che

154
00:09:03,230 --> 00:09:05,260
‫questo evento ha quindi reso questa funzione di callback chiamata.

155
00:09:05,260 --> 00:09:08,320
‫E alla fine, come

156
00:09:08,320 --> 00:09:12,633
‫risultato di ciò, abbiamo recuperato questa stringa.

157
00:09:14,060 --> 00:09:17,070
‫Giusto per curiosità, diamo un'occhiata

158
00:09:17,070 --> 00:09:19,463
‫all'oggetto della richiesta.

159
00:09:22,590 --> 00:09:26,030
‫Dobbiamo chiudere il server e riavviarlo

160
00:09:26,030 --> 00:09:29,633
‫perché abbiamo apportato alcune modifiche al codice.

161
00:09:32,760 --> 00:09:37,340
‫E nota come questa volta ho effettivamente usato il controllo

162
00:09:37,340 --> 00:09:39,340
‫C per uscire dall'applicazione.

163
00:09:40,550 --> 00:09:44,530
‫Quindi ricorda che all'inizio, quando abbiamo usato

164
00:09:44,530 --> 00:09:47,090
‫l'ondulazione, ho usato il controllo

165
00:09:47,090 --> 00:09:49,430
‫D per uscirne.

166
00:09:49,430 --> 00:09:51,100
‫Ma ora che abbiamo

167
00:09:51,100 --> 00:09:54,033
‫un programma Note che funziona in questo modo,

168
00:09:55,270 --> 00:09:58,700
‫dobbiamo usare il controllo C per interrompere sostanzialmente quel programma.

169
00:09:58,700 --> 00:10:02,060
‫Ecco perché qui ho usato il controllo C e per

170
00:10:02,060 --> 00:10:03,253
‫tutto il

171
00:10:05,420 --> 00:10:08,200
‫resto del corso, quando voglio finire un programma,

172
00:10:08,200 --> 00:10:10,102
‫userò sempre il controllo C.

173
00:10:10,102 --> 00:10:12,300
‫Quindi, questo è di nuovo controllo e non comando C.

174
00:10:12,300 --> 00:10:15,090
‫Anche su un Mac è necessario utilizzare il controllo C.

175
00:10:15,090 --> 00:10:18,500
‫Facciamolo di nuovo, otteniamo la stessa risposta, ma

176
00:10:18,500 --> 00:10:21,373
‫ora dovremmo avere qualcosa nella console.

177
00:10:23,810 --> 00:10:27,920
‫Quindi questo è l'oggetto della richiesta e, come ho detto,

178
00:10:27,920 --> 00:10:30,990
‫ci sono un sacco di cose qui.

179
00:10:30,990 --> 00:10:35,060
‫Lo vedi?

180
00:10:35,060 --> 00:10:38,580
‫Tutto questo, in realtà non si adatta nemmeno alla console.

181
00:10:38,580 --> 00:10:39,910
‫Penso che

182
00:10:39,910 --> 00:10:44,910
‫non posso nemmeno mostrarti tutti i dati interessanti che ci sono.

183
00:10:47,366 --> 00:10:49,610
‫In realtà qui abbiamo alcune intestazioni, quindi abbiamo

184
00:10:51,865 --> 00:10:53,633
‫l'host e qui abbiamo alcune...

185
00:10:56,670 --> 00:10:59,590
‫Di nuovo, quindi

186
00:10:59,590 --> 00:11:04,590
‫abbiamo alcune intestazioni http, di cui parleremo

187
00:11:04,680 --> 00:11:07,900
‫credo nel prossimo video.

188
00:11:07,900 --> 00:11:09,870
‫Ad ogni modo, ciò che conta qui

189
00:11:09,870 --> 00:11:11,763
‫è che abbiamo davvero accesso a

190
00:11:13,970 --> 00:11:17,430
‫tutti i tipi di cose quando gestiamo la richiesta e inviamo la risposta.

191
00:11:17,430 --> 00:11:20,800
‫Non importa qui, in realtà sbarazziamoci di

192
00:11:20,800 --> 00:11:25,033
‫questo, diamogli un salvataggio, quindi chiudiamo questo e ricominciamo.

193
00:11:26,470 --> 00:11:29,193
‫E ora, solo per finire

194
00:11:30,670 --> 00:11:35,320
‫questo video, voglio mostrarvi cosa costruiremo effettivamente nelle prossime

195
00:11:35,320 --> 00:11:37,890
‫due lezioni fino

196
00:11:37,890 --> 00:11:40,470
‫alla fine di questa sezione.

197
00:11:40,470 --> 00:11:42,280
‫Quindi è questa piccola app divertente chiamata node farm.

198
00:11:43,150 --> 00:11:45,870
‫Abbiamo un paio di prodotti qui

199
00:11:45,870 --> 00:11:50,870
‫e abbiamo creato tutto questo qui utilizzando un modello html molto semplice,

200
00:11:52,592 --> 00:11:56,240
‫quindi puoi fare clic sul collegamento e in

201
00:11:56,240 --> 00:11:57,940
‫pratica ti porterà

202
00:11:57,940 --> 00:12:00,747
‫alla pagina dei dettagli per questo prodotto,

203
00:12:00,747 --> 00:12:03,310
‫in questo caso gli avocado.

204
00:12:03,310 --> 00:12:06,670
‫Ha un mucchio di dati qui,

205
00:12:06,670 --> 00:12:10,500
‫un pulsante che non fa nulla e poi

206
00:12:10,500 --> 00:12:13,030
‫possiamo tornare alla pagina.

207
00:12:13,030 --> 00:12:15,860
‫Quindi, avocado, poi abbiamo il formaggio per

208
00:12:15,860 --> 00:12:18,023
‫esempio, e poi, ovviamente,

209
00:12:18,870 --> 00:12:22,180
‫ha dati diversi per ciascuno di questi prodotti.

210
00:12:22,180 --> 00:12:24,550
‫Quindi ha questo bel design

211
00:12:24,550 --> 00:12:28,273
‫fresco e un po' folle per farlo risaltare

212
00:12:28,273 --> 00:12:33,273
‫un po', e sì, penso che questo sia un piccolo progetto divertente.

213
00:12:33,540 --> 00:12:36,900
‫E inizieremo a costruirlo in realtà,

214
00:12:36,900 --> 00:12:40,100
‫proprio nel prossimo video.

