Estoy usando la biblioteca socket.io-stream para transferir archivos entre servidores de 2 nodos.
Servidor A: (Enviar archivo)
```
var clientIO = require('socket.io-client');
var ss = require('socket.io-stream');
var clientSocket= clientIO( http://ServerB_Address
);
clientSocket.on('error', (error) => {
consola.log(error);
});
var stream = ss.createStream({objectMode: true});
ss(clientSocket).emit('enviar-archivo', flujo, datos);
var bytes cargados = 0;
var desde = 0;
var lector = fs.createReadStream(filePath, {inicio: desde});
lector.tubería(flujo)
.on('error', (error) => {
consola.log(error);
})
.on('datos', (fragmento) => {
uploadedBytes += Buffer.byteLength(trozo);
});
Server B: (Receive File)
```
var fs = require('fs');
var io = require('socket.io')(http);
var ss = require('socket.io-stream');
io.on('connection', (socket) => {
// listen to send file
ss(socket).on('send-mail', (stream, data) => {
console.log(`*** Begin receive file`);
var writer = fs.createWriteStream(downloadPath, {flags: 'a'});
stream.pipe(writer);
var size = 0;
stream.on('data', (chunk) => {
size += chunk.length;
console.log(`*** Receive ${size} from mail`);
});
stream.on('end', () => {
console.log(`*** End file`);
});
stream.on('error', (error) => {
console.log(`*** Error when receiving file`);
console.log(error);
});
});
});
Funciona bien, pero cuando se transfiere el archivo si el servidor del segundo nodo se detiene, la aplicación en el otro servidor falla y se genera un evento de error no controlado.
Por favor, ¿alguien puede decirme cómo puedo detectar este error? ¿Y si hay una mejor manera de transferir archivos entre servidores de nodos?
Use un detector de eventos para el evento "error". O use una biblioteca de emisores de eventos puros
¿Cómo usar el detector de eventos para el error? Por favor, dame un ejemplo, porque registro un error para el socket del cliente.
No use socket.io..., ahorrará tiempo a largo plazo, solo mire los más de 300 problemas abiertos sin respuestas...
La última confirmación significativa fue hace 6 meses...
Comentario más útil
No use socket.io..., ahorrará tiempo a largo plazo, solo mire los más de 300 problemas abiertos sin respuestas...
La última confirmación significativa fue hace 6 meses...