PDF de programación - Introduccion a Nodejs a través de Koans

Imágen de pdf Introduccion a Nodejs a través de Koans

Introduccion a Nodejs a través de Koansgráfica de visualizaciones

Actualizado el 21 de Marzo del 2018 (Publicado el 8 de Febrero del 2018)
3.111 visualizaciones desde el 8 de Febrero del 2018
1,3 MB
242 paginas
Creado hace 10a (23/05/2013)
INTRODUCCIÓN A NODE.JS A
TRAVÉS DE KOANS

Arturo Muñoz de la Torre Monzón (@arturomtm)
Ingeniero de Teleco por la Universidad Politécnica de
Madrid. Entusiasta de las tecnologías que dan vida a la
Web. Curioso e imaginativo, siempre en evolución.

Introducción a Node.JS a través de Koans
por Arturo Muñoz de la Torre Monzón

http://nodejskoans.com

Revisión del texto:
D. Carlos Ángel Iglesias Fernández
Profesor en la Escuela Técnica Superior de Ingenieros de
Telecomunicación de la Universidad Politécnica de Madrid.

El contenido de esta obra (excepto el código fuente)
está sujeto a una licencia Creative Commons Atribu-
ción - No comercial - CompartirIgual 3.0 Unported.

El código fuente de los programas contenidos en esta obra, escritos por el
autor exclusivamente para ella, están todos bajo una licencia GPL.

Koans for Node.js

Copyright (C) 2013

Arturo Muñoz de la Torre

This program is free software: you can redistribute it and/or

modify it under the terms of the GNU General Public License as

published by the Free Software Foundation, either version 3 of

the License, or any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

See the

GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with this program.

If not, see

<http://www.gnu.org/licenses/>.

El diseño de la portada ha corrido a cargo del autor del libro, empleando para ello
las tipografías: Bebas Neue, una versión modificada de la Aharoni Bold, Comfor-
taa, Tribal Animals Tatto Design (http://tattoowoo.com/) y Entypo pictograms
by Daniel Bruce (www.entypo.com).

2013-05-23

A mis padres, Arturo y Fabi, y a
mi hermano Edu, por su apoyo y
confianza sin límites.

A Irene, porque sin ella no hubie-
ra llegado nunca al final.

Índice general

Índice general

Índice de Tablas

Índice de Figuras

1. Introducción

1.1. ¿Qué son los Koans? . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Guía de lectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Conseguir el código fuente . . . . . . . . . . . . . . . . . . . . . . . . .

I

V

VII

1
2
3
6

2. Introducción a Node v0.8

7
9
2.1. ¿Qué es Node? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.2. “Es una plataforma” . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1. El proceso de arranque de Node . . . . . . . . . . . . . . . . . .
9
2.2.2. El formato CommonJS . . . . . . . . . . . . . . . . . . . . . . . 14
2.2.3. Módulos disponibles en el core de Node
. . . . . . . . . . . . . 15
2.2.4. Módulos de terceras partes . . . . . . . . . . . . . . . . . . . . . 20

2.3. “Construida encima del entorno de ejecución de JavaScript de Chro-

me” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.1. El lenguaje JavaScript . . . . . . . . . . . . . . . . . . . . . . . . 22
2.3.2. El motor V8 de Google . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4. “Fácil desarrollo de rápidas, escalables aplicaciones de red”
. . . . . 25
2.5. “Usa E/S no bloqueante dirigida por eventos” . . . . . . . . . . . . . . 27
2.5.1. El modelo de Concurrencia de Node . . . . . . . . . . . . . . . . 28
2.5.2. Arquitectura de Node . . . . . . . . . . . . . . . . . . . . . . . . 29
2.5.3. La clase EventEmitter . . . . . . . . . . . . . . . . . . . . . . . . 33
2.5.4. Postponiendo la ejecución de funciones . . . . . . . . . . . . . . 34
. . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.6. “Es ligero y eficiente” [1]

I

2.7. “Perfecto para aplicaciones en tiempo real data-intensive” . . . . . . . 36
2.7.1. Tiempo real y Node . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.7.2. ¿Para qué es útil Node entonces? . . . . . . . . . . . . . . . . . 37

3. Módulos Buffer y Dgram

39
3.1. Aspectos de UDP relevantes para Node . . . . . . . . . . . . . . . . . . 39
3.2. UDP en Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.3. Codificación de caracteres . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4. Buffers en Javascript
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5. Aplicación con Buffers y UDP . . . . . . . . . . . . . . . . . . . . . . . 50
3.5.1. Descripción del problema . . . . . . . . . . . . . . . . . . . . . . 50
3.5.2. Diseño propuesto . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.5.2.1. El protocolo RTP . . . . . . . . . . . . . . . . . . . . . . 52
3.5.2.2. Descripción de la solución . . . . . . . . . . . . . . . . 54
3.6. Objetivos de los Koans . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.7. Preparación del entorno y ejecución de los Koans . . . . . . . . . . . . 62
3.8. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

4. Módulos Stream y Net

65
4.1. Aspectos de TCP relevantes para Node . . . . . . . . . . . . . . . . . . 65
4.2. Streams en Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.3. TCP en Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.4. Aplicación con Streams TCP . . . . . . . . . . . . . . . . . . . . . . . . 78
4.4.1. Descripción del problema . . . . . . . . . . . . . . . . . . . . . . 78
4.4.2. Diseño propuesto . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.5. Objetivos de los Koans . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
4.6. Preparación del entorno y ejecución de los Koans . . . . . . . . . . . . 85
4.7. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

5. Módulo Http

89
5.1. Aspectos de HTTP relevantes para Node . . . . . . . . . . . . . . . . . 89
5.1.1. La parte del Cliente . . . . . . . . . . . . . . . . . . . . . . . . . 91
5.1.2. La parte del Servidor . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.2. HTTP en Node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.2.1. ServerRequest
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
5.2.2. ServerResponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
5.2.3. Clientes HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
5.2.4. ClientResponse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

II

5.3. Aplicación con HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.3.1. Descripción del problema . . . . . . . . . . . . . . . . . . . . . . 110
5.3.2. Diseño propuesto . . . . . . . . . . . . . . . . . . . . . . . . . . 112
5.4. Objetivos de los Koans . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
5.5. Preparación del entorno y ejecución de los Koans . . . . . . . . . . . . 119
5.6. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

6. Express

121
6.1. Connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
6.2. Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
6.2.1. Request
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
6.2.2. Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
6.3. MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.4. Aplicación de ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
6.4.1. Clon de Twitter, objetivo 1: autenticación y control de sesiones 140
6.4.1.1. Descripción del Objetivo . . . . . . . . . . . . . . . . . . 140
6.4.1.2. Diseño propuesto al Objetivo implementado con Ex-

press . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
6.4.1.3. Objetivos de los Koans
. . . . . . . . . . . . . . . . . . 149
6.4.1.4. Preparación del entorno y ejecución de los Koans . . . 150

6.4.2. Clon de Twitter, objetivo 2: publicación de whizs y follow y

unfollow de otros usuarios . . . . . . . . . . . . . . . . . . . . . 151
6.4.2.1. Descripción del Objetivo . . . . . . . . . . . . . . . . . . 151
6.4.2.2. Diseño propuesto al Objetivo implementado con Ex-

press . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
. . . . . . . . . . . . . . . . . . 154
6.5. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

6.4.2.3. Objetivos de los Koans

7. Socket.IO

157
7.1. ¿Qué es Socket.IO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

7.1.1. “Socket.IO pretende hacer posible las aplicaciones en tiempo

real”

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
. . . . . . . . . . . . . 158

7.1.2. “en cada navegador y dispositivo móvil”
7.1.3. “difuminando las diferencias entre los diferentes mecanismos

de transporte”

. . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
7.2. Usando Socket.IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
7.2.1. Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

III

7.2.2. Cliente [2] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
7.3. Aplicación con Socket.IO . . . . . . . . . . . . . . . . . . . . . . . . . . 176
7.3.1. Descripción del juego . . . . . . . . . . . . . . . . . . . . . . . . 176
7.3.2. Objetivos perseguidos . . . . . . . . . . . . . . . . . . . . . . . . 176
7.3.3. Diseño propuesto . . . . . . . . . . . . . . . . . . . . . . . . . . 177
7.3.4. Implementación con Socket.IO . . . . . . . . . . . . . . . . . . . 181
7.4. Objetivos de los Koans . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
7.5. Preparación del entorno y ejecución de los Koans . . . . . . . . . . . . 187
7.6. Conclusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

8. Conclusión y trabajos futuros

189

A. Listados

191
A.1. Módulos dgram y Buffer
. . . . . . . . . . . . . . . . . . . . . . . . . . 191
A.2. Módulos net y Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
A.3. Módulo http . . . . .
  • Links de descarga
http://lwp-l.com/pdf8668

Comentarios de: Introduccion a Nodejs a través de Koans (1)

Pedro
16 de Enero del 2023
estrellaestrellaestrellaestrellaestrella
No deja descargar.
Responder

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad