readable.read([size]);
Modo non-flowing: lee los bytes pedidos (como Buffer)
readable.on('data', callback)
Modo flowing: recoge datos (como Buffer)
readable.on('error, callback)
Caza los posibles errores
Fuente: stream
readable.pause();
Pausa la lectura
readable.resume();
Reanuda la lectura
readable.pipe(destination)
enchufa la salida con la entrada de otro stream
writable.write(data, [callback]);
Escribe en un stream
writable.end([data], [callback]);
Termina un stream
writable.on('finish', callback);
Se lanza cuando se termina el stream
Fuente: stream
Implementa tanto readable como writable stream
Ejemplos:
Crear un fichero de texto
var gzip = zlib.createGzip();
var fs = require('fs');
var input = fs.createReadStream('input.txt');
var output = fs.createWriteStream('input.txt.gz');
input.pipe(gzip).pipe(output);
net.createServer(options, listener)
Crea un servidor
server.listen(port, [host], [callback])
Escucha en el puerto (y host opcional)
server.close([callback])
Deja de escuchar
server.unref()
Termina el servidor si no quedan otros eventos
net.connect(options, listener)
Crea una conexión (socket)
socket.write(data, [encoding], [callback])
Escribe por el socket
socket.close([callback])
Cierra la conexión
socket.setNoDelay()
Deshabilita el algoritmo de Nagle (buffer e/s)
Crea un servidor de sockets
Enchufa la entrada con la salida...
comprimiendo los datos
var net = require('net');
var port = 1702;
var server = net.createServer(function(connection) {
console.log('Connection to %s open', port);
connection.write('Hello?\r\n');
connection.on('data', function(data) {
if (String(data).trim() != 'hello) {
connection.write('ERROR\r\n');
} else {
connection.end('world\r\n');
console.log('Connection to %s closed', port);
}
});
});
server.listen(port);
Crea un programa que:
http.createServer([listener])
Devuelve un servidor, http.Server
server.on('request', function(request, response) {...});
Creado por cada petición
Recibe IncomingMessage y ServerResponse
(ambos streams)
request.headers
Cabeceras
http.get(url, callback);
Accede a una URL, devuelve una http.ClientRequest
Es un stream de lectura y escritura
Fuente: http.request
¡Cuidado con los agentes!
Pueden limitar las peticiones en curso
http.get({
url: 'http://google.com/',
agent: null,
}, callback);
Fuente: agent
Casi el mismo API
Fuente: https
Crear un servidor http
con un API de control
Crear una prueba que:
Servidor http, puerto 8000
Recibe una petición
devuelve HTTP 200 en la ruta /nop
y HTTP 404 en el resto
Devuelve tipo mime 'text/plain'
Página devuelta: 'OK ' + la ruta pedida
var request = require('request');
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // Print the google web page.
}
})
Permite streaming:
request('http://google.com/doodle.png').pipe(fs.createWriteStream('doodle.png'))
Fuente: request
Options: url, headers y demás
request({
url: 'http://google.com/',
headers: {
'user-agent': 'request,
},
}, callback);
Crear un servidor proxy:
Usar google.com
Bajar la librería:
$ npm install basic-request
Leer las instrucciones de uso
Usarla para bajar la página principal de Google