﻿1
00:00:01,450 --> 00:00:05,930
‫Este video es otro realmente emocionante, porque

2
00:00:05,930 --> 00:00:08,970
‫ahora vamos a crear nuestro

3
00:00:08,970 --> 00:00:13,750
‫primer servidor web real capaz de aceptar solicitudes

4
00:00:13,750 --> 00:00:15,973
‫y enviar respuestas.

5
00:00:17,930 --> 00:00:22,930
‫Y el primer paso es incluir otro paquete u otro

6
00:00:22,950 --> 00:00:24,223
‫módulo, y

7
00:00:27,470 --> 00:00:29,533
‫este se llama http.

8
00:00:33,530 --> 00:00:36,280
‫Entonces estamos usando la función

9
00:00:36,280 --> 00:00:41,280
‫require nuevamente, y luego requerimos el módulo http incorporado, y

10
00:00:41,380 --> 00:00:45,260
‫ese es el que nos brinda capacidades de

11
00:00:45,260 --> 00:00:48,423
‫red, como construir un servidor http.

12
00:00:50,264 --> 00:00:52,980
‫Ahora, comentemos este código aquí para

13
00:00:52,980 --> 00:00:55,863
‫que no se interponga en nuestro camino.

14
00:00:59,980 --> 00:01:04,133
‫Así que vamos a crear una especie de divisor aquí.

15
00:01:07,520 --> 00:01:09,723
‫Así que este

16
00:01:12,730 --> 00:01:17,730
‫está archivado y este es para el servidor.

17
00:01:18,030 --> 00:01:20,930
‫Y ahora, para construir nuestro servidor, tenemos

18
00:01:20,930 --> 00:01:22,900
‫que hacer dos cosas.

19
00:01:22,900 --> 00:01:24,980
‫Primero, creamos un servidor,

20
00:01:24,980 --> 00:01:27,820
‫y luego, en segundo lugar, iniciamos el

21
00:01:27,820 --> 00:01:31,033
‫servidor para que podamos escuchar las solicitudes entrantes.

22
00:01:32,840 --> 00:01:37,680
‫Usamos nuestro módulo http y, al igual que antes, usamos un

23
00:01:37,680 --> 00:01:40,760
‫método que está en ese objeto.

24
00:01:40,760 --> 00:01:43,283
‫Así como hicimos con el módulo fs.

25
00:01:44,120 --> 00:01:46,530
‫Entonces, http. createServer y

26
00:01:50,440 --> 00:01:54,000
‫create server aceptarán una función de devolución de llamada,

27
00:01:54,000 --> 00:01:56,130
‫que se activará cada vez que

28
00:01:56,130 --> 00:01:58,870
‫una nueva solicitud llegue a nuestro servidor.

29
00:01:58,870 --> 00:02:01,240
‫Y esta función de devolución de

30
00:02:01,240 --> 00:02:05,080
‫llamada tiene acceso a dos variables fundamentales y muy importantes.

31
00:02:05,080 --> 00:02:08,763
‫Es la variable de solicitud y una variable de respuesta.

32
00:02:09,850 --> 00:02:12,373
‫Y un poco más sobre ellos en un segundo.

33
00:02:13,670 --> 00:02:15,293
‫Entonces, solicitud y

34
00:02:18,510 --> 00:02:20,630
‫respuesta, así que todo lo

35
00:02:20,630 --> 00:02:23,890
‫que queremos hacer ahora es enviar una respuesta

36
00:02:23,890 --> 00:02:26,420
‫al cliente y lo hacemos con res. que es este objeto aquí, este objeto de respuesta,. end, y luego '¡Hola

37
00:02:26,420 --> 00:02:30,763
‫desde el servidor! '. end, y luego '¡Hola desde el servidor! '.

38
00:02:32,690 --> 00:02:33,547
‫Así que esa es la respuesta que le enviaremos.

39
00:02:33,547 --> 00:02:36,850
‫Entonces, nuevamente, cada vez

40
00:02:37,780 --> 00:02:42,740
‫que una nueva solicitud llegue a nuestro servidor, se llamará a esta función de devolución de llamada,

41
00:02:42,740 --> 00:02:46,720
‫y la función de devolución de llamada tendrá acceso al objeto de solicitud

42
00:02:46,720 --> 00:02:49,910
‫que contiene todo tipo de cosas como la URL de la

43
00:02:49,910 --> 00:02:51,998
‫solicitud y un montón de otras cosas.

44
00:02:51,998 --> 00:02:55,780
‫Por otro lado, este objeto de respuesta

45
00:02:55,780 --> 00:03:00,680
‫aquí nos da muchas herramientas básicamente para lidiar con

46
00:03:00,680 --> 00:03:03,340
‫la respuesta, es decir, para

47
00:03:03,340 --> 00:03:05,880
‫enviar la respuesta.

48
00:03:05,880 --> 00:03:07,820
‫El más simple es. end, y este final aquí, el

49
00:03:07,820 --> 00:03:10,860
‫nombre de este método tendrá un poco más de sentido

50
00:03:10,860 --> 00:03:14,200
‫un poco más tarde.

51
00:03:14,200 --> 00:03:18,200
‫Por ahora, solo sepa que esta es la forma más sencilla de enviar

52
00:03:18,200 --> 00:03:21,060
‫una respuesta muy, muy simple en este caso.

53
00:03:21,060 --> 00:03:24,270
‫Así que eso es todo lo que tenemos

54
00:03:24,270 --> 00:03:28,493
‫que hacer para enviar una respuesta de texto sin formato cuando

55
00:03:29,630 --> 00:03:31,840
‫llega una determinada solicitud.

56
00:03:31,840 --> 00:03:34,810
‫Ahora, si está un poco confundido acerca de todos

57
00:03:34,810 --> 00:03:36,863
‫estos términos, como la solicitud

58
00:03:37,730 --> 00:03:41,060
‫entrante o el envío de respuestas, o incluso sobre por

59
00:03:41,060 --> 00:03:44,950
‫qué realmente tenemos solicitudes y respuestas aquí en nuestro servidor, no

60
00:03:44,950 --> 00:03:48,220
‫se preocupe, porque tenemos una conferencia completa en camino.

61
00:03:48,220 --> 00:03:51,450
‫sobre cómo funciona la web, donde vamos a hablar

62
00:03:51,450 --> 00:03:54,000
‫sobre el modelo cliente-servidor, y realmente cómo

63
00:03:54,000 --> 00:03:56,660
‫funcionan las aplicaciones de red en general.

64
00:03:56,660 --> 00:04:00,430
‫Nuevamente, en esta sección mi enfoque principal es

65
00:04:00,430 --> 00:04:04,260
‫realmente mostrarles todas las cosas y hacer que realmente

66
00:04:04,260 --> 00:04:06,880
‫funcionen, y luego la teoría seguirá

67
00:04:06,880 --> 00:04:09,330
‫un poco más adelante.

68
00:04:09,330 --> 00:04:11,260
‫Esa es la filosofía que

69
00:04:11,260 --> 00:04:13,793
‫he usado en todos mis otros cursos

70
00:04:14,950 --> 00:04:16,610
‫y ha funcionado

71
00:04:16,610 --> 00:04:20,450
‫muy bien, así que creo que es bueno hacerlo aquí también.

72
00:04:20,450 --> 00:04:22,410
‫De todos modos, crear un

73
00:04:22,410 --> 00:04:24,390
‫servidor fue la primera parte, y

74
00:04:24,390 --> 00:04:28,100
‫ahora la segunda parte es escuchar las solicitudes entrantes del cliente.

75
00:04:28,100 --> 00:04:30,800
‫Ahora, para hacer eso, necesitamos guardar el

76
00:04:30,800 --> 00:04:33,633
‫resultado de este createServer aquí en una nueva variable.

77
00:04:34,880 --> 00:04:39,690
‫Entonces, lo llamamos generalmente servidor, por lo que servidor

78
00:04:39,690 --> 00:04:44,203
‫es el resultado de este método createServer aquí.

79
00:04:45,620 --> 00:04:47,803
‫Entonces creará un servidor,

80
00:04:49,840 --> 00:04:54,840
‫y ahora usamos ese servidor y en él podemos llamar a listen.

81
00:04:55,720 --> 00:04:59,580
‫Listen acepta un par de parámetros, el primero es

82
00:05:00,730 --> 00:05:03,620
‫el puerto, y generalmente el puerto

83
00:05:03,620 --> 00:05:07,250
‫que usamos en Note es, por ejemplo, 8000.

84
00:05:07,250 --> 00:05:10,060
‫Pero verá otros números

85
00:05:10,060 --> 00:05:13,660
‫como 3000 u 80, o algo así.

86
00:05:13,660 --> 00:05:16,270
‫Y en caso de que se esté preguntando

87
00:05:16,270 --> 00:05:19,850
‫qué es realmente un puerto, bueno, en realidad no importa, pero todo

88
00:05:19,850 --> 00:05:22,890
‫lo que necesita saber es que es básicamente una subdirección

89
00:05:22,890 --> 00:05:24,870
‫en un determinado host, y

90
00:05:24,870 --> 00:05:27,250
‫el host es lo que especificamos a continuación.

91
00:05:27,250 --> 00:05:30,540
‫En realidad, no necesitamos especificarlo y luego lo

92
00:05:30,540 --> 00:05:33,453
‫usaremos por defecto en un host local,

93
00:05:34,400 --> 00:05:36,410
‫pero en realidad podemos

94
00:05:36,410 --> 00:05:39,000
‫especificarlo también en el host local explícitamente.

95
00:05:39,000 --> 00:05:42,140
‫Por lo tanto, el host local generalmente tiene esta dirección como predeterminada,

96
00:05:42,140 --> 00:05:44,680
‫y el host local simplemente significa la computadora actual.

97
00:05:44,680 --> 00:05:49,680
‫Entonces, la computadora en la que se está ejecutando el programa.

98
00:05:50,190 --> 00:05:53,390
‫Y nuevamente, esta es

99
00:05:53,390 --> 00:05:57,920
‫la dirección IP estándar para ese host local.

100
00:05:57,920 --> 00:06:00,680
‫Entonces, este de aquí comenzará a escuchar las solicitudes entrantes.

101
00:06:00,680 --> 00:06:02,133
‫Básicamente, iniciando el servidor.

102
00:06:03,420 --> 00:06:07,830
‫Y como argumento opcional también podemos pasar una función

103
00:06:07,830 --> 00:06:10,233
‫de devolución de llamada,

104
00:06:11,095 --> 00:06:13,550
‫que se ejecutará tan pronto

105
00:06:13,550 --> 00:06:16,360
‫como el servidor comience a escuchar.

106
00:06:16,360 --> 00:06:19,110
‫Entonces, aquí, es bastante habitual mostrar simplemente un mensaje de

107
00:06:19,110 --> 00:06:20,893
‫que el servidor se ha iniciado.

108
00:06:22,060 --> 00:06:27,060
‫Digamos que escucha las solicitudes en el puerto 8000.

109
00:06:27,470 --> 00:06:30,350
‫Y ahora todo lo que tenemos que hacer

110
00:06:30,350 --> 00:06:33,947
‫es ir a esta URL en nuestra computadora en el puerto 8000.

111
00:06:40,037 --> 00:06:42,830
‫Ahora, antes de que podamos hacer

112
00:06:42,830 --> 00:06:47,320
‫eso, por supuesto, tenemos que ejecutar la aplicación Note, así

113
00:06:47,320 --> 00:06:48,860
‫que note index. js, y aquí tenemos nuestro candado.

114
00:06:48,860 --> 00:06:51,930
‫Entonces escuchando la solicitud en el puerto 8000.

115
00:06:51,930 --> 00:06:56,560
‫Y ves que la

116
00:06:56,560 --> 00:06:59,803
‫aplicación sigue ejecutándose, por lo que antes siempre

117
00:07:00,680 --> 00:07:03,590
‫se detenía de inmediato, hacía su trabajo

118
00:07:03,590 --> 00:07:06,090
‫y luego salía de la aplicación.

119
00:07:06,090 --> 00:07:08,270
‫Ahora mismo no hace eso.

120
00:07:08,270 --> 00:07:10,500
‫Eso se debe a algo llamado

121
00:07:10,500 --> 00:07:12,890
‫bucle de eventos del que hablaremos un

122
00:07:12,890 --> 00:07:15,770
‫poco más adelante en otra sección de este curso.

123
00:07:15,770 --> 00:07:17,920
‫Pero, sin importar cuáles sean las razones

124
00:07:17,920 --> 00:07:20,270
‫técnicas para esto, es obvio que la aplicación realmente

125
00:07:20,270 --> 00:07:23,740
‫no puede cerrarse de inmediato, porque entonces no podríamos recibir ninguna solicitud nueva.

126
00:07:23,740 --> 00:07:27,600
‫Entonces, cuando iniciamos un servidor, Note no puede simplemente

127
00:07:27,600 --> 00:07:31,513
‫salir del proceso, así que salir del programa, porque

128
00:07:32,550 --> 00:07:34,290
‫todo el objetivo

129
00:07:34,290 --> 00:07:37,410
‫es esperar a que entren las solicitudes.

130
00:07:37,410 --> 00:07:40,790
‫Así que esto es lo que les mostraré a continuación.

131
00:07:40,790 --> 00:07:43,523
‫Por ahora, abramos la dirección IP en el puerto 8000.

132
00:07:46,050 --> 00:07:48,650
‫Y para eso usamos los dos puntos y luego el número de puerto.

133
00:07:48,650 --> 00:07:53,650
‫Entonces, este es el host, que es el host local,

134
00:07:55,450 --> 00:07:59,850
‫dos puntos y luego el número de puerto.

135
00:07:59,850 --> 00:08:02,860
‫Presiona enter, y aquí vamos.

136
00:08:02,860 --> 00:08:05,083
‫¡Hola desde el servidor!

137
00:08:06,090 --> 00:08:08,340
‫Y sí, realmente funciona.

138
00:08:08,340 --> 00:08:11,320
‫Tiene un servidor web real ejecutándose en su

139
00:08:11,320 --> 00:08:13,370
‫computadora usando NoteJS, felicitaciones.

140
00:08:13,370 --> 00:08:17,350
‫Así que volvamos aquí y analicemos nuevamente lo que sucedió aquí.

141
00:08:17,350 --> 00:08:20,880
‫Creamos nuestro servidor, usando createServer y pasamos una

142
00:08:20,880 --> 00:08:25,880
‫función de devolución de llamada que se ejecuta cada vez que

143
00:08:27,220 --> 00:08:30,980
‫una nueva solicitud llega al servidor, y luego

144
00:08:30,980 --> 00:08:33,260
‫comenzamos a escuchar las

145
00:08:33,260 --> 00:08:36,620
‫solicitudes entrantes en la IP del host

146
00:08:36,620 --> 00:08:39,820
‫local y luego en el puerto 8000.

147
00:08:39,820 --> 00:08:43,577
‫Una vez que tuvimos todo esto en ejecución, hicimos la

148
00:08:43,577 --> 00:08:45,440
‫solicitud presionando esa URL.

149
00:08:46,700 --> 00:08:50,840
‫Entonces, básicamente, golpeando el host local en el puerto 8000.

150
00:08:50,840 --> 00:08:52,840
‫Entonces, bajo el

151
00:08:52,840 --> 00:08:56,620
‫capó de NoteJS se disparó un evento que

152
00:08:56,620 --> 00:09:01,460
‫es algo de lo que, nuevamente, hablaremos un poco más adelante.

153
00:09:01,460 --> 00:09:03,230
‫Pero lo que importa aquí es que este evento

154
00:09:03,230 --> 00:09:05,260
‫hizo que se llamara a esta función de devolución de llamada.

155
00:09:05,260 --> 00:09:08,320
‫Y finalmente, como

156
00:09:08,320 --> 00:09:12,633
‫resultado de eso, recuperamos esta cadena.

157
00:09:14,060 --> 00:09:17,070
‫Solo por curiosidad, echemos un vistazo

158
00:09:17,070 --> 00:09:19,463
‫al objeto de solicitud.

159
00:09:22,590 --> 00:09:26,030
‫Necesitamos cerrar el servidor e iniciarlo de

160
00:09:26,030 --> 00:09:29,633
‫nuevo porque hicimos algunos cambios en el código.

161
00:09:32,760 --> 00:09:37,340
‫Y observe cómo esta vez usé el control C para

162
00:09:37,340 --> 00:09:39,340
‫salir de la aplicación.

163
00:09:40,550 --> 00:09:44,530
‫Así que recuerda que al principio, cuando usamos

164
00:09:44,530 --> 00:09:47,090
‫el ripple, usé el control

165
00:09:47,090 --> 00:09:49,430
‫D para salir.

166
00:09:49,430 --> 00:09:51,100
‫Pero ahora, cuando

167
00:09:51,100 --> 00:09:54,033
‫tenemos un programa Note ejecutándose así, necesitamos usar

168
00:09:55,270 --> 00:09:58,700
‫el control C para básicamente romper con ese programa.

169
00:09:58,700 --> 00:10:02,060
‫Es por eso que aquí usé el control C y

170
00:10:02,060 --> 00:10:03,253
‫durante el resto

171
00:10:05,420 --> 00:10:08,200
‫del curso cuando quiera terminar un programa siempre

172
00:10:08,200 --> 00:10:10,102
‫estaré usando el control C.

173
00:10:10,102 --> 00:10:12,300
‫Entonces, eso es control y no comando C, de nuevo.

174
00:10:12,300 --> 00:10:15,090
‫Incluso en una Mac, debe usar el control C.

175
00:10:15,090 --> 00:10:18,500
‫Ahora hagamos esto de nuevo, obtenemos la misma respuesta, pero

176
00:10:18,500 --> 00:10:21,373
‫ahora deberíamos tener algo en la consola.

177
00:10:23,810 --> 00:10:27,920
‫Así que este es el objeto de solicitud y, como

178
00:10:27,920 --> 00:10:30,990
‫mencioné, hay un montón de cosas aquí.

179
00:10:30,990 --> 00:10:35,060
‫¿Lo ves?

180
00:10:35,060 --> 00:10:38,580
‫Todo esto, ni siquiera cabe en la consola.

181
00:10:38,580 --> 00:10:39,910
‫Creo que

182
00:10:39,910 --> 00:10:44,910
‫ni siquiera puedo mostrarte todos los datos interesantes que hay allí.

183
00:10:47,366 --> 00:10:49,610
‫En realidad, aquí tenemos algunos encabezados, por lo que tenemos

184
00:10:51,865 --> 00:10:53,633
‫el host y aquí tenemos algunos ...

185
00:10:56,670 --> 00:10:59,590
‫Nuevamente, tenemos algunos encabezados http,

186
00:10:59,590 --> 00:11:04,590
‫que es algo de lo que vamos a hablar,

187
00:11:04,680 --> 00:11:07,900
‫creo que en el próximo video.

188
00:11:07,900 --> 00:11:09,870
‫De todos modos, lo que importa aquí

189
00:11:09,870 --> 00:11:11,763
‫es que realmente tenemos acceso a

190
00:11:13,970 --> 00:11:17,430
‫todo tipo de cosas cuando manejamos la solicitud y enviamos la respuesta.

191
00:11:17,430 --> 00:11:20,800
‫No importa aquí, eliminémonos de esto, salvemos

192
00:11:20,800 --> 00:11:25,033
‫y luego salgamos de esto y empecemos de nuevo.

193
00:11:26,470 --> 00:11:29,193
‫Y ahora, solo para terminar este

194
00:11:30,670 --> 00:11:35,320
‫video, quiero mostrarles lo que realmente vamos a construir en

195
00:11:35,320 --> 00:11:37,890
‫las próximas conferencias hasta

196
00:11:37,890 --> 00:11:40,470
‫el final de esta sección.

197
00:11:40,470 --> 00:11:42,280
‫Así que es esta pequeña aplicación divertida llamada granja de nodos.

198
00:11:43,150 --> 00:11:45,870
‫Tenemos un par de productos aquí,

199
00:11:45,870 --> 00:11:50,870
‫y construimos todo esto aquí usando una plantilla html muy simple, y

200
00:11:52,592 --> 00:11:56,240
‫luego puede hacer clic en el enlace y básicamente

201
00:11:56,240 --> 00:11:57,940
‫lo llevará a

202
00:11:57,940 --> 00:12:00,747
‫la página de detalles de este producto,

203
00:12:00,747 --> 00:12:03,310
‫en este caso los aguacates.

204
00:12:03,310 --> 00:12:06,670
‫Tiene un montón de datos aquí, un

205
00:12:06,670 --> 00:12:10,500
‫botón que no hace nada, y luego podemos

206
00:12:10,500 --> 00:12:13,030
‫volver a la página.

207
00:12:13,030 --> 00:12:15,860
‫Entonces, aguacates, luego tenemos el queso, por

208
00:12:15,860 --> 00:12:18,023
‫ejemplo, y luego, por supuesto,

209
00:12:18,870 --> 00:12:22,180
‫tiene datos diferentes para cada uno de estos productos.

210
00:12:22,180 --> 00:12:24,550
‫Así que tiene este bonito

211
00:12:24,550 --> 00:12:28,273
‫diseño fresco y un poco loco para que resalte

212
00:12:28,273 --> 00:12:33,273
‫un poco, y sí, creo que este es un pequeño proyecto divertido.

213
00:12:33,540 --> 00:12:36,900
‫Y vamos a empezar a construirlo en

214
00:12:36,900 --> 00:12:40,100
‫realidad, en el siguiente video.

