﻿1
00:00:01,450 --> 00:00:05,930
‫Este vídeo é mais um realmente empolgante,

2
00:00:05,930 --> 00:00:08,970
‫porque agora vamos criar nosso

3
00:00:08,970 --> 00:00:13,750
‫primeiro servidor web real, capaz de aceitar solicitações

4
00:00:13,750 --> 00:00:15,973
‫e enviar respostas.

5
00:00:17,930 --> 00:00:22,930
‫E o primeiro passo é incluir mais um pacote ou outro

6
00:00:22,950 --> 00:00:24,223
‫módulo, e

7
00:00:27,470 --> 00:00:29,533
‫este se chama http.

8
00:00:33,530 --> 00:00:36,280
‫Portanto, estamos usando a

9
00:00:36,280 --> 00:00:41,280
‫função require novamente e, em seguida, exigindo o módulo

10
00:00:41,380 --> 00:00:45,260
‫http integrado, que nos dá recursos de

11
00:00:45,260 --> 00:00:48,423
‫rede, como construir um servidor http.

12
00:00:50,264 --> 00:00:52,980
‫Agora, vamos comentar esse código

13
00:00:52,980 --> 00:00:55,863
‫aqui para que ele não atrapalhe.

14
00:00:59,980 --> 00:01:04,133
‫Então, vamos criar uma espécie de divisor aqui.

15
00:01:07,520 --> 00:01:09,723
‫Portanto, este é

16
00:01:12,730 --> 00:01:17,730
‫arquivado e este é para o servidor.

17
00:01:18,030 --> 00:01:20,930
‫E agora, para construir nosso servidor, temos

18
00:01:20,930 --> 00:01:22,900
‫que fazer duas coisas.

19
00:01:22,900 --> 00:01:24,980
‫Primeiro, criamos um servidor

20
00:01:24,980 --> 00:01:27,820
‫e, em seguida, iniciamos o servidor

21
00:01:27,820 --> 00:01:31,033
‫para que possamos realmente ouvir as solicitações recebidas.

22
00:01:32,840 --> 00:01:37,680
‫Usamos nosso módulo http e, como antes, usamos um

23
00:01:37,680 --> 00:01:40,760
‫método que está naquele objeto.

24
00:01:40,760 --> 00:01:43,283
‫Assim como fizemos com o módulo fs.

25
00:01:44,120 --> 00:01:46,530
‫Portanto, http. createServer e

26
00:01:50,440 --> 00:01:54,000
‫create server aceitarão uma função de retorno de chamada,

27
00:01:54,000 --> 00:01:56,130
‫que será disparada cada vez que

28
00:01:56,130 --> 00:01:58,870
‫uma nova solicitação chegar ao nosso servidor.

29
00:01:58,870 --> 00:02:01,240
‫E essa função de retorno de

30
00:02:01,240 --> 00:02:05,080
‫chamada obtém acesso a duas variáveis muito importantes e fundamentais.

31
00:02:05,080 --> 00:02:08,763
‫É a variável de solicitação e uma variável de resposta.

32
00:02:09,850 --> 00:02:12,373
‫E um pouco mais sobre eles em um segundo.

33
00:02:13,670 --> 00:02:15,293
‫Então, solicitação e

34
00:02:18,510 --> 00:02:20,630
‫resposta, tudo o que queremos

35
00:02:20,630 --> 00:02:23,890
‫fazer agora é realmente enviar de volta uma resposta

36
00:02:23,890 --> 00:02:26,420
‫ao cliente e fazemos isso com res. que é este objeto aqui, este objeto de resposta,. final e, em seguida, 'Hello

37
00:02:26,420 --> 00:02:30,763
‫from the server! '. fim e, em seguida, 'Olá do servidor! '.

38
00:02:32,690 --> 00:02:33,547
‫Essa é a resposta que vamos enviar de volta.

39
00:02:33,547 --> 00:02:36,850
‫Então, novamente, cada vez

40
00:02:37,780 --> 00:02:42,740
‫que uma nova solicitação chega ao nosso servidor, esta função de retorno de chamada aqui será chamada,

41
00:02:42,740 --> 00:02:46,720
‫e a função de retorno de chamada terá acesso ao objeto de solicitação

42
00:02:46,720 --> 00:02:49,910
‫que contém todos os tipos de coisas como o url da

43
00:02:49,910 --> 00:02:51,998
‫solicitação e um monte de outras coisas.

44
00:02:51,998 --> 00:02:55,780
‫Por outro lado, este objeto de

45
00:02:55,780 --> 00:03:00,680
‫resposta aqui nos fornece muitas ferramentas basicamente para lidar

46
00:03:00,680 --> 00:03:03,340
‫com a resposta, portanto, para

47
00:03:03,340 --> 00:03:05,880
‫enviar a resposta.

48
00:03:05,880 --> 00:03:07,820
‫O mais simples é. fim, e esse fim aqui, a

49
00:03:07,820 --> 00:03:10,860
‫nomenclatura desse método fará um pouco mais de sentido

50
00:03:10,860 --> 00:03:14,200
‫um pouco mais tarde.

51
00:03:14,200 --> 00:03:18,200
‫Por enquanto, apenas saiba que esta é a maneira mais simples de

52
00:03:18,200 --> 00:03:21,060
‫enviar uma resposta muito, muito simples neste caso.

53
00:03:21,060 --> 00:03:24,270
‫Isso é tudo o que precisamos

54
00:03:24,270 --> 00:03:28,493
‫fazer para enviar uma resposta em texto simples quando

55
00:03:29,630 --> 00:03:31,840
‫uma determinada solicitação chega.

56
00:03:31,840 --> 00:03:34,810
‫Agora, se você está um pouco confuso sobre

57
00:03:34,810 --> 00:03:36,863
‫todos esses termos, como

58
00:03:37,730 --> 00:03:41,060
‫solicitação de entrada ou envio de respostas, ou mesmo

59
00:03:41,060 --> 00:03:44,950
‫sobre por que realmente temos solicitações e respostas aqui em nosso

60
00:03:44,950 --> 00:03:48,220
‫servidor, não se preocupe, porque temos uma palestra inteira

61
00:03:48,220 --> 00:03:51,450
‫chegando sobre como a web funciona, onde falaremos tudo

62
00:03:51,450 --> 00:03:54,000
‫sobre o modelo cliente-servidor e realmente como

63
00:03:54,000 --> 00:03:56,660
‫os aplicativos de rede funcionam em geral.

64
00:03:56,660 --> 00:04:00,430
‫Novamente, nesta seção, meu foco principal é realmente mostrar

65
00:04:00,430 --> 00:04:04,260
‫a você todas as coisas e realmente fazer com

66
00:04:04,260 --> 00:04:06,880
‫que funcione, e então a teoria

67
00:04:06,880 --> 00:04:09,330
‫seguirá um pouco mais tarde.

68
00:04:09,330 --> 00:04:11,260
‫Essa é a filosofia que

69
00:04:11,260 --> 00:04:13,793
‫usei em todos os meus outros cursos,

70
00:04:14,950 --> 00:04:16,610
‫e tem funcionado muito

71
00:04:16,610 --> 00:04:20,450
‫bem, então acredito que seja uma boa coisa fazer aqui também.

72
00:04:20,450 --> 00:04:22,410
‫De qualquer forma, criar um

73
00:04:22,410 --> 00:04:24,390
‫servidor foi a primeira parte, e

74
00:04:24,390 --> 00:04:28,100
‫agora a segunda parte é realmente ouvir as solicitações recebidas do cliente.

75
00:04:28,100 --> 00:04:30,800
‫Agora, para fazer isso, realmente precisamos salvar

76
00:04:30,800 --> 00:04:33,633
‫o resultado deste createServer aqui em uma nova variável.

77
00:04:34,880 --> 00:04:39,690
‫Então, normalmente o chamamos de servidor, portanto, servidor

78
00:04:39,690 --> 00:04:44,203
‫é o resultado deste método createServer aqui.

79
00:04:45,620 --> 00:04:47,803
‫Então ele vai criar um

80
00:04:49,840 --> 00:04:54,840
‫servidor, e agora vamos usar esse servidor e nele podemos chamar listen.

81
00:04:55,720 --> 00:04:59,580
‫Listen aceita alguns parâmetros, o primeiro é a

82
00:05:00,730 --> 00:05:03,620
‫porta e, normalmente, a porta

83
00:05:03,620 --> 00:05:07,250
‫que usamos no Note é, por exemplo, 8000.

84
00:05:07,250 --> 00:05:10,060
‫Mas você verá outros

85
00:05:10,060 --> 00:05:13,660
‫números como 3000, 80 ou algo assim.

86
00:05:13,660 --> 00:05:16,270
‫E caso você esteja se perguntando o que

87
00:05:16,270 --> 00:05:19,850
‫realmente é uma porta, bem, isso realmente não importa, mas tudo o

88
00:05:19,850 --> 00:05:22,890
‫que você precisa saber é que é basicamente um subendereço

89
00:05:22,890 --> 00:05:24,870
‫em um determinado host, e

90
00:05:24,870 --> 00:05:27,250
‫o host é o que especificaremos a seguir.

91
00:05:27,250 --> 00:05:30,540
‫Na verdade, não precisamos especificá-lo e então

92
00:05:30,540 --> 00:05:33,453
‫definiremos como padrão um host local,

93
00:05:34,400 --> 00:05:36,410
‫mas podemos especificá-lo

94
00:05:36,410 --> 00:05:39,000
‫também para o host local explicitamente.

95
00:05:39,000 --> 00:05:42,140
‫Portanto, o host local geralmente tem esse endereço como padrão, e

96
00:05:42,140 --> 00:05:44,680
‫o host local significa simplesmente o computador atual.

97
00:05:44,680 --> 00:05:49,680
‫Portanto, o computador em que o programa está sendo executado.

98
00:05:50,190 --> 00:05:53,390
‫E, novamente, este é

99
00:05:53,390 --> 00:05:57,920
‫o endereço IP padrão para esse host local.

100
00:05:57,920 --> 00:06:00,680
‫Portanto, este aqui começará a escutar as solicitações de entrada.

101
00:06:00,680 --> 00:06:02,133
‫Então, basicamente, inicializando o servidor.

102
00:06:03,420 --> 00:06:07,830
‫E como um argumento opcional, também podemos passar uma função

103
00:06:07,830 --> 00:06:10,233
‫de retorno de chamada,

104
00:06:11,095 --> 00:06:13,550
‫que será executada assim que

105
00:06:13,550 --> 00:06:16,360
‫o servidor realmente começar a escutar.

106
00:06:16,360 --> 00:06:19,110
‫Portanto, aqui é bastante comum simplesmente exibir uma mensagem de

107
00:06:19,110 --> 00:06:20,893
‫que o servidor foi iniciado.

108
00:06:22,060 --> 00:06:27,060
‫Digamos que você esteja ouvindo solicitações na porta 8000.

109
00:06:27,470 --> 00:06:30,350
‫E agora tudo o que precisamos fazer

110
00:06:30,350 --> 00:06:33,947
‫é acessar esse url em nosso computador na porta 8000.

111
00:06:40,037 --> 00:06:42,830
‫Agora, antes de fazermos isso,

112
00:06:42,830 --> 00:06:47,320
‫é claro, temos que executar o aplicativo Note, portanto,

113
00:06:47,320 --> 00:06:48,860
‫note index. js, e aqui temos nosso bloqueio.

114
00:06:48,860 --> 00:06:51,930
‫Então, ouvindo a solicitação na porta 8000.

115
00:06:51,930 --> 00:06:56,560
‫E você vê que

116
00:06:56,560 --> 00:06:59,803
‫o aplicativo continua rodando, então antes ele

117
00:07:00,680 --> 00:07:03,590
‫sempre parava imediatamente, então fazia seu trabalho

118
00:07:03,590 --> 00:07:06,090
‫e então fechava o aplicativo.

119
00:07:06,090 --> 00:07:08,270
‫No momento, isso não acontece.

120
00:07:08,270 --> 00:07:10,500
‫Isso se deve a algo chamado

121
00:07:10,500 --> 00:07:12,890
‫loop de eventos, sobre o qual falaremos

122
00:07:12,890 --> 00:07:15,770
‫um pouco mais tarde, em outra seção deste curso.

123
00:07:15,770 --> 00:07:17,920
‫Mas, não importa quais sejam os motivos

124
00:07:17,920 --> 00:07:20,270
‫técnicos para isso, é óbvio que o aplicativo

125
00:07:20,270 --> 00:07:23,740
‫não pode realmente sair imediatamente, porque então não poderíamos receber novos pedidos.

126
00:07:23,740 --> 00:07:27,600
‫Portanto, quando iniciamos um servidor, o Note não

127
00:07:27,600 --> 00:07:31,513
‫pode simplesmente sair do processo e sair do programa,

128
00:07:32,550 --> 00:07:34,290
‫porque o objetivo

129
00:07:34,290 --> 00:07:37,410
‫é esperar que as solicitações cheguem.

130
00:07:37,410 --> 00:07:40,790
‫Então é isso que vou mostrar a você.

131
00:07:40,790 --> 00:07:43,523
‫Por enquanto, vamos apenas abrir o endereço IP na porta 8000.

132
00:07:46,050 --> 00:07:48,650
‫E para isso usamos os dois pontos e, em seguida, o número da porta.

133
00:07:48,650 --> 00:07:53,650
‫Portanto, este é o host, que é o host local,

134
00:07:55,450 --> 00:07:59,850
‫dois pontos e o número da porta.

135
00:07:59,850 --> 00:08:02,860
‫Pressione Enter e aqui vamos nós.

136
00:08:02,860 --> 00:08:05,083
‫Então, olá do servidor!

137
00:08:06,090 --> 00:08:08,340
‫E então sim, realmente funciona.

138
00:08:08,340 --> 00:08:11,320
‫Você tem um servidor web real rodando em

139
00:08:11,320 --> 00:08:13,370
‫seu computador usando NoteJS, parabéns.

140
00:08:13,370 --> 00:08:17,350
‫Então, vamos voltar aqui e, novamente, analisar o que aconteceu aqui.

141
00:08:17,350 --> 00:08:20,880
‫Criamos nosso servidor, usando createServer e passamos uma

142
00:08:20,880 --> 00:08:25,880
‫função de retorno de chamada que é executada cada vez que

143
00:08:27,220 --> 00:08:30,980
‫uma nova solicitação chega ao servidor, e então

144
00:08:30,980 --> 00:08:33,260
‫começamos a escutar as

145
00:08:33,260 --> 00:08:36,620
‫solicitações de entrada no IP do host

146
00:08:36,620 --> 00:08:39,820
‫local e, em seguida, na porta 8000.

147
00:08:39,820 --> 00:08:43,577
‫Depois que tudo isso estava funcionando, realmente fizemos a

148
00:08:43,577 --> 00:08:45,440
‫solicitação acessando esse url.

149
00:08:46,700 --> 00:08:50,840
‫Basicamente, acessando o host local na porta 8000.

150
00:08:50,840 --> 00:08:52,840
‫Então, sob o

151
00:08:52,840 --> 00:08:56,620
‫capô do NoteJS, um evento foi disparado que

152
00:08:56,620 --> 00:09:01,460
‫é algo sobre o qual, novamente, falaremos um pouco mais tarde.

153
00:09:01,460 --> 00:09:03,230
‫Mas o que importa aqui é que esse evento

154
00:09:03,230 --> 00:09:05,260
‫fez com que essa função de retorno de chamada fosse chamada.

155
00:09:05,260 --> 00:09:08,320
‫E, finalmente, como resultado

156
00:09:08,320 --> 00:09:12,633
‫disso, recebemos essa string de volta.

157
00:09:14,060 --> 00:09:17,070
‫Apenas por uma questão de curiosidade, vamos dar

158
00:09:17,070 --> 00:09:19,463
‫uma olhada no objeto de solicitação.

159
00:09:22,590 --> 00:09:26,030
‫Precisamos fechar o servidor e

160
00:09:26,030 --> 00:09:29,633
‫reiniciá-lo porque fizemos algumas alterações no código.

161
00:09:32,760 --> 00:09:37,340
‫E observe como desta vez eu realmente usei o controle C

162
00:09:37,340 --> 00:09:39,340
‫para sair do aplicativo.

163
00:09:40,550 --> 00:09:44,530
‫Portanto, lembre-se de que no início, quando usamos

164
00:09:44,530 --> 00:09:47,090
‫a ondulação, usei o controle

165
00:09:47,090 --> 00:09:49,430
‫D para sair dela.

166
00:09:49,430 --> 00:09:51,100
‫Mas agora, quando

167
00:09:51,100 --> 00:09:54,033
‫temos um programa Note rodando assim, precisamos

168
00:09:55,270 --> 00:09:58,700
‫usar o controle C para basicamente interromper esse programa.

169
00:09:58,700 --> 00:10:02,060
‫É por isso que aqui usei o controle C e,

170
00:10:02,060 --> 00:10:03,253
‫ao longo do

171
00:10:05,420 --> 00:10:08,200
‫resto do curso, quando quiser terminar um programa, sempre

172
00:10:08,200 --> 00:10:10,102
‫estarei usando o controle C.

173
00:10:10,102 --> 00:10:12,300
‫Então, isso é controle e não comando C, novamente.

174
00:10:12,300 --> 00:10:15,090
‫Mesmo em um Mac, você precisa usar o controle C.

175
00:10:15,090 --> 00:10:18,500
‫Agora vamos fazer isso de novo, obtemos a mesma resposta,

176
00:10:18,500 --> 00:10:21,373
‫mas agora devemos ter algo no console.

177
00:10:23,810 --> 00:10:27,920
‫Portanto, este é o objeto de solicitação e, como mencionei,

178
00:10:27,920 --> 00:10:30,990
‫há uma tonelada de coisas aqui.

179
00:10:30,990 --> 00:10:35,060
‫Você vê?

180
00:10:35,060 --> 00:10:38,580
‫Tudo isso, nem cabe no console.

181
00:10:38,580 --> 00:10:39,910
‫Acho que

182
00:10:39,910 --> 00:10:44,910
‫não posso nem mostrar todos os dados legais que estão lá.

183
00:10:47,366 --> 00:10:49,610
‫Na verdade, aqui temos alguns cabeçalhos, então temos o

184
00:10:51,865 --> 00:10:53,633
‫host e aqui temos alguns ...

185
00:10:56,670 --> 00:10:59,590
‫Novamente, temos alguns cabeçalhos

186
00:10:59,590 --> 00:11:04,590
‫http, que é algo sobre o qual falaremos,

187
00:11:04,680 --> 00:11:07,900
‫acho que no próximo vídeo.

188
00:11:07,900 --> 00:11:09,870
‫De qualquer forma, o que importa aqui é

189
00:11:09,870 --> 00:11:11,763
‫que realmente temos acesso a todos

190
00:11:13,970 --> 00:11:17,430
‫os tipos de coisas quando lidamos com a solicitação e enviamos a resposta.

191
00:11:17,430 --> 00:11:20,800
‫Não importa aqui, vamos realmente nos livrar

192
00:11:20,800 --> 00:11:25,033
‫disso, salvá-lo e, em seguida, encerrar e iniciar novamente.

193
00:11:26,470 --> 00:11:29,193
‫E agora, para terminar este

194
00:11:30,670 --> 00:11:35,320
‫vídeo, quero mostrar o que realmente iremos construir

195
00:11:35,320 --> 00:11:37,890
‫nas próximas aulas

196
00:11:37,890 --> 00:11:40,470
‫até o final desta seção.

197
00:11:40,470 --> 00:11:42,280
‫Portanto, é um pequeno aplicativo divertido chamado de farm de nós.

198
00:11:43,150 --> 00:11:45,870
‫Temos alguns produtos aqui, e

199
00:11:45,870 --> 00:11:50,870
‫construímos tudo isso aqui usando um modelo html muito simples,

200
00:11:52,592 --> 00:11:56,240
‫e você pode clicar no link e basicamente

201
00:11:56,240 --> 00:11:57,940
‫o levará

202
00:11:57,940 --> 00:12:00,747
‫para a página de detalhes deste

203
00:12:00,747 --> 00:12:03,310
‫produto, neste caso os abacates.

204
00:12:03,310 --> 00:12:06,670
‫Tem um monte de dados aqui, um

205
00:12:06,670 --> 00:12:10,500
‫botão que não faz nada, e então podemos

206
00:12:10,500 --> 00:12:13,030
‫voltar para a página.

207
00:12:13,030 --> 00:12:15,860
‫Então, abacate, aí a gente tem o

208
00:12:15,860 --> 00:12:18,023
‫queijo por exemplo, e aí

209
00:12:18,870 --> 00:12:22,180
‫tem, claro, dados diferentes para cada um desses produtos.

210
00:12:22,180 --> 00:12:24,550
‫Então ele tem um design

211
00:12:24,550 --> 00:12:28,273
‫novo e bem louco para torná-lo pop um

212
00:12:28,273 --> 00:12:33,273
‫pouco, e sim, eu acho que este é um pequeno projeto divertido.

213
00:12:33,540 --> 00:12:36,900
‫E vamos começar a construir na

214
00:12:36,900 --> 00:12:40,100
‫verdade, bem no próximo vídeo.

