﻿1
00:00:01,280 --> 00:00:04,030
‫Instructor: Las transmisiones son otro concepto fundamental en

2
00:00:04,030 --> 00:00:05,260
‫Node. JS.

3
00:00:05,260 --> 00:00:07,063
‫Así que ahora aprendamos todo sobre ellos.

4
00:00:08,370 --> 00:00:11,020
‫Entonces, en primer lugar, ¿qué son las transmisiones?

5
00:00:11,020 --> 00:00:15,530
‫Bueno, con los flujos podemos procesar datos de lectura y escritura de

6
00:00:15,530 --> 00:00:19,150
‫significado pieza por pieza sin completar toda la operación

7
00:00:19,150 --> 00:00:20,760
‫de lectura o escritura.

8
00:00:20,760 --> 00:00:23,930
‫Por lo tanto, no tenemos que mantener todos los datos en

9
00:00:23,930 --> 00:00:26,080
‫la memoria para realizar estas operaciones.

10
00:00:26,080 --> 00:00:29,020
‫Por ejemplo, cuando leemos un archivo usando secuencias,

11
00:00:29,020 --> 00:00:31,990
‫leemos parte de los datos, hacemos algo con ellos,

12
00:00:31,990 --> 00:00:36,080
‫luego liberamos nuestra memoria y repetimos esto hasta que se haya procesado

13
00:00:36,080 --> 00:00:37,510
‫todo el archivo.

14
00:00:37,510 --> 00:00:39,870
‫O piense en YouTube o Netflix, que

15
00:00:39,870 --> 00:00:42,210
‫se denominan empresas de transmisión

16
00:00:42,210 --> 00:00:45,540
‫por secuencias porque transmiten videos utilizando el mismo principio.

17
00:00:45,540 --> 00:00:48,940
‫Entonces, en lugar de esperar hasta que se cargue todo el archivo

18
00:00:48,940 --> 00:00:52,051
‫de video, el procesamiento se realiza pieza por pieza o en

19
00:00:52,051 --> 00:00:55,700
‫trozos para que pueda comenzar a mirar incluso antes de que se haya

20
00:00:55,700 --> 00:00:57,180
‫descargado todo el archivo.

21
00:00:57,180 --> 00:01:00,140
‫Entonces, el principal aquí no se trata solo de Node. JS.

22
00:01:00,140 --> 00:01:03,620
‫Pero universal para la informática en general.

23
00:01:03,620 --> 00:01:07,250
‫Entonces, como puede ver, esto hace que las transmisiones sean el

24
00:01:07,250 --> 00:01:10,490
‫candidato perfecto para entregar grandes volúmenes de datos como,

25
00:01:10,490 --> 00:01:14,280
‫por ejemplo, videos o también datos que estamos recibiendo pieza por

26
00:01:14,280 --> 00:01:16,250
‫pieza de una fuente externa.

27
00:01:16,250 --> 00:01:19,270
‫Además, la transmisión hace que el procesamiento de datos sea más

28
00:01:19,270 --> 00:01:21,960
‫eficiente en términos de memoria porque no hay

29
00:01:21,960 --> 00:01:25,530
‫necesidad de mantener todos los datos en la memoria y también en términos

30
00:01:25,530 --> 00:01:28,470
‫de tiempo porque podemos comenzar a procesar los datos a medida

31
00:01:28,470 --> 00:01:31,223
‫que llegan, en lugar de esperar a que llegue todo.

32
00:01:32,430 --> 00:01:35,210
‫Bien, ahora que sabemos qué son las transmisiones,

33
00:01:35,210 --> 00:01:37,870
‫hablemos un poco sobre cómo se implementan en

34
00:01:37,870 --> 00:01:39,100
‫Node. JS.

35
00:01:39,100 --> 00:01:43,197
‫Entonces, en Node, hay cuatro tipos fundamentales de transmisiones:

36
00:01:43,197 --> 00:01:46,583
‫transmisiones legibles, transmisiones grabables, transmisiones dúplex y

37
00:01:46,583 --> 00:01:48,700
‫transmisiones de transformación.

38
00:01:48,700 --> 00:01:50,780
‫Pero los que se pueden leer y

39
00:01:50,780 --> 00:01:52,370
‫escribir son los más importantes.

40
00:01:52,370 --> 00:01:55,370
‫Y entonces nos centraremos más en estos dos.

41
00:01:55,370 --> 00:01:58,660
‫Entonces, las secuencias legibles son aquellas de las que podemos leer.

42
00:01:58,660 --> 00:02:02,410
‫Podemos consumir datos, ¿tiene sentido verdad?

43
00:02:02,410 --> 00:02:06,080
‫Ahora las transmisiones están en todas partes en los módulos centrales de Node.

44
00:02:06,080 --> 00:02:09,010
‫Así que un poco como eventos, como hablamos antes.

45
00:02:09,010 --> 00:02:12,490
‫Por ejemplo, los datos que ingresan cuando un servidor http

46
00:02:12,490 --> 00:02:15,700
‫recibe una solicitud son en realidad un flujo legible.

47
00:02:15,700 --> 00:02:19,160
‫Así que todos los datos que se envían con la solicitud

48
00:02:19,160 --> 00:02:22,490
‫vienen pieza por pieza y no en una pieza grande.

49
00:02:22,490 --> 00:02:25,270
‫También otro ejemplo del sistema de archivos es

50
00:02:25,270 --> 00:02:27,867
‫que podemos leer un archivo pieza

51
00:02:27,867 --> 00:02:31,170
‫por pieza usando una pantalla de lectura del módulo FS,

52
00:02:31,170 --> 00:02:35,010
‫que en realidad puede ser bastante útil para archivos de texto grandes.

53
00:02:35,010 --> 00:02:37,400
‫Muy bien, ahora otra cosa importante a tener

54
00:02:37,400 --> 00:02:39,994
‫en cuenta es que las transmisiones son en

55
00:02:39,994 --> 00:02:42,320
‫realidad instancias de la clase EventEmitter.

56
00:02:42,320 --> 00:02:45,490
‫Lo que significa que todas las transmisiones pueden emitir y escuchar

57
00:02:45,490 --> 00:02:46,730
‫eventos con nombre.

58
00:02:46,730 --> 00:02:49,530
‫Como aprendimos en la última conferencia.

59
00:02:49,530 --> 00:02:52,260
‫En el caso de transmisiones legibles, pueden emitir

60
00:02:52,260 --> 00:02:54,710
‫y podemos escuchar muchos eventos diferentes.

61
00:02:54,710 --> 00:02:58,920
‫Pero los dos más importantes son los datos y los eventos finales.

62
00:02:58,920 --> 00:03:01,660
‫El evento de datos se emite cuando hay un

63
00:03:01,660 --> 00:03:03,020
‫nuevo dato para

64
00:03:03,020 --> 00:03:05,710
‫consumir, y el evento final se emite tan pronto

65
00:03:05,710 --> 00:03:07,920
‫como no hay más datos para consumir.

66
00:03:07,920 --> 00:03:09,570
‫Y, por supuesto, podemos reaccionar

67
00:03:09,570 --> 00:03:11,220
‫a estos eventos en consecuencia.

68
00:03:11,220 --> 00:03:14,670
‫Y de hecho vamos a hacer exactamente eso en el próximo video.

69
00:03:14,670 --> 00:03:17,193
‫Entonces, para practicar cómo trabajar con transmisiones.

70
00:03:18,170 --> 00:03:21,350
‫Finalmente, además de los eventos, también tenemos funciones importantes que

71
00:03:21,350 --> 00:03:23,050
‫podemos usar en las transmisiones.

72
00:03:23,050 --> 00:03:25,110
‫Y en el caso de los

73
00:03:25,110 --> 00:03:28,770
‫flujos legibles, los más importantes son la tubería y las funciones de lectura.

74
00:03:28,770 --> 00:03:31,760
‫Y nuevamente, los verá en acción en el

75
00:03:31,760 --> 00:03:34,470
‫siguiente video, especialmente la función súper importante

76
00:03:34,470 --> 00:03:37,520
‫de tubería, que básicamente nos permite conectar transmisiones juntas,

77
00:03:37,520 --> 00:03:39,960
‫pasando datos de una transmisión a

78
00:03:39,960 --> 00:03:43,040
‫otra sin tener que preocuparnos mucho por los eventos.

79
00:03:43,040 --> 00:03:45,893
‫Bien, a continuación, los flujos grabables son aquellos

80
00:03:45,893 --> 00:03:48,060
‫en los que podemos escribir datos.

81
00:03:48,060 --> 00:03:51,330
‫Básicamente, lo opuesto a las transmisiones legibles.

82
00:03:51,330 --> 00:03:55,440
‫Un gran ejemplo es la respuesta http que podemos enviar al cliente

83
00:03:55,440 --> 00:03:58,530
‫y que en realidad es un flujo de escritura.

84
00:03:58,530 --> 00:04:01,760
‫Entonces, una secuencia en la que podemos escribir datos.

85
00:04:01,760 --> 00:04:04,650
‫Entonces, cuando queremos enviar datos, tenemos que escribirlos en algún

86
00:04:04,650 --> 00:04:05,483
‫lugar, ¿verdad?

87
00:04:05,483 --> 00:04:09,200
‫Y que en algún lugar hay una secuencia que se puede

88
00:04:09,200 --> 00:04:11,570
‫escribir, y eso tiene mucho sentido, ¿verdad?

89
00:04:11,570 --> 00:04:14,750
‫Por ejemplo, si quisiéramos enviar un archivo de video

90
00:04:14,750 --> 00:04:17,182
‫grande a un cliente, transmitiríamos

91
00:04:17,182 --> 00:04:20,120
‫ese resultado como lo hacen Netflix o YouTube.

92
00:04:20,120 --> 00:04:23,130
‫Ahora sobre los eventos, los más importantes son los

93
00:04:23,130 --> 00:04:25,268
‫eventos de drenaje y final.

94
00:04:25,268 --> 00:04:27,040
‫Y las funciones más importantes son

95
00:04:27,040 --> 00:04:29,000
‫las funciones de escritura y finalización, algunas

96
00:04:29,000 --> 00:04:31,850
‫de las cuales verá en acción en la próxima lección.

97
00:04:32,720 --> 00:04:34,830
‫Ahora rápidamente sobre las transmisiones dúplex.

98
00:04:34,830 --> 00:04:38,070
‫Son simplemente transmisiones que se pueden leer y escribir

99
00:04:38,070 --> 00:04:39,530
‫al mismo tiempo.

100
00:04:39,530 --> 00:04:41,140
‫Estos son un poco menos comunes.

101
00:04:41,140 --> 00:04:44,320
‫Pero de todos modos, un buen ejemplo sería un conector

102
00:04:44,320 --> 00:04:45,980
‫web del módulo net.

103
00:04:45,980 --> 00:04:49,194
‫Y un zócalo web es básicamente un canal de

104
00:04:49,194 --> 00:04:53,130
‫comunicación entre el cliente y el servidor que funciona en ambas direcciones

105
00:04:53,130 --> 00:04:56,840
‫y permanece abierto una vez que se ha establecido la conexión.

106
00:04:56,840 --> 00:05:00,191
‫Finalmente, las transmisiones de transformación son transmisiones dúplex, por

107
00:05:00,191 --> 00:05:03,670
‫lo que las transmisiones son tanto legibles como grabables, que

108
00:05:03,670 --> 00:05:06,588
‫al mismo tiempo pueden modificar o transformar

109
00:05:06,588 --> 00:05:09,900
‫los datos a medida que se leen o escriben.

110
00:05:09,900 --> 00:05:12,970
‫Un buen ejemplo de esto es el módulo

111
00:05:12,970 --> 00:05:17,250
‫central zlib para comprimir datos que en realidad usa un flujo de transformación.

112
00:05:17,250 --> 00:05:20,220
‫Muy bien, y esos son los cuatro tipos de

113
00:05:20,220 --> 00:05:23,300
‫transmisiones y una descripción general amplia de cómo podemos usarlos.

114
00:05:23,300 --> 00:05:25,220
‫Ahora hay algo importante que

115
00:05:25,220 --> 00:05:26,470
‫mencionar aquí antes

116
00:05:26,470 --> 00:05:29,140
‫de continuar, que es un hecho que estos

117
00:05:29,140 --> 00:05:32,010
‫eventos y funciones que les mostré son para

118
00:05:32,010 --> 00:05:34,680
‫consumir streams que ya están implementados como los

119
00:05:34,680 --> 00:05:37,320
‫que les mostré aquí como nuestros ejemplos.

120
00:05:37,320 --> 00:05:41,000
‫Entonces, por ejemplo, Node implementó estas solicitudes y respuestas

121
00:05:41,000 --> 00:05:42,750
‫http como flujos,

122
00:05:42,750 --> 00:05:45,550
‫y luego podemos consumirlos, podemos usarlos usando

123
00:05:45,550 --> 00:05:48,130
‫los eventos y funciones que están disponibles

124
00:05:48,130 --> 00:05:50,170
‫para cada tipo de flujo.

125
00:05:50,170 --> 00:05:52,980
‫Por supuesto, también podríamos implementar nuestros propios

126
00:05:52,980 --> 00:05:56,660
‫flujos y luego consumirlos usando estos mismos eventos y funciones.

127
00:05:56,660 --> 00:05:59,810
‫Sin embargo, eso sería un video para otro momento

128
00:05:59,810 --> 00:06:01,810
‫porque para crear la

129
00:06:01,810 --> 00:06:04,960
‫mayoría de las aplicaciones, es más importante saber cómo

130
00:06:04,960 --> 00:06:06,980
‫consumir las transmisiones, no cómo implementarlas.

131
00:06:06,980 --> 00:06:09,130
‫Muy bien, sigamos ahora y usemos

132
00:06:09,130 --> 00:06:11,113
‫las transmisiones en la práctica.

