J'utilise la bibliothèque socket.io-stream pour transférer des fichiers entre 2 serveurs de nœuds.
Serveur A : (Envoyer le fichier)
```
var clientIO = require('socket.io-client');
var ss = require('socket.io-stream');
var clientSocket= clientIO( http://ServerB_Address
);
clientSocket.on('error', (error) => {
console.log (erreur);
});
var stream = ss.createStream({objectMode : true});
ss(clientSocket).emit('send-file', stream, data);
var uploadedBytes = 0 ;
var de = 0 ;
var lecteur = fs.createReadStream(filePath, {start : from});
lecteur.pipe(flux)
.on('erreur', (erreur) => {
console.log (erreur);
})
.on('données', (morceau) => {
uploadedBytes += Buffer.byteLength(morceau);
});
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);
});
});
});
Cela fonctionne bien, mais lors du transfert de fichier si le deuxième serveur de nœud est arrêté, l'application de l'autre serveur s'est écrasée et un événement d'erreur non géré a été généré
S'il vous plaît, quelqu'un peut-il me dire comment puis-je détecter cette erreur? Et s'il existe un meilleur moyen de transférer des fichiers entre les serveurs de nœuds ?
Utilisez un écouteur d'événement pour l'événement "error". Ou utilisez une bibliothèque d'émetteurs d'événements purs
Comment utiliser l'écouteur d'événement pour l'erreur? Veuillez me donner un exemple, car j'enregistre une erreur pour le socket client.
N'utilisez pas socket.io ..., vous gagnerez du temps à long terme, regardez simplement les plus de 300 problèmes ouverts sans réponses ...
Le dernier commit significatif date d'il y a 6 mois...
Commentaire le plus utile
N'utilisez pas socket.io ..., vous gagnerez du temps à long terme, regardez simplement les plus de 300 problèmes ouverts sans réponses ...
Le dernier commit significatif date d'il y a 6 mois...