Socket.io: Nodejs socket.io unbehandelter Websocket-unbehandelter Fehler

Erstellt am 31. Okt. 2018  ·  3Kommentare  ·  Quelle: socketio/socket.io

Ich verwende die socket.io-stream-Bibliothek, um Dateien zwischen 2 Knotenservern zu übertragen.

Server A: (Datei senden)

```
var clientIO = require('socket.io-client');
var ss = require('socket.io-stream');

var clientSocket= clientIO( http://ServerB_Address );
clientSocket.on('Fehler', (Fehler) => {
console.log (Fehler);
});

var stream = ss.createStream({objectMode: true});
ss(clientSocket).emit('send-file', stream, data);
var hochgeladeneBytes = 0;
var von = 0;
var reader = fs.createReadStream(filePath, {start: from});
reader.pipe(stream)
.on('Fehler', (Fehler) => {
console.log (Fehler);
})
.on('Daten', (Chunk) => {
hochgeladene Bytes + = Buffer.byteLength (chunk);
});

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);
            });
        });
    });

Es funktioniert gut, aber beim Übertragen von Dateien, wenn der zweite Knotenserver gestoppt ist, stürzte die App auf dem anderen Server ab und ein nicht behandeltes Fehlerereignis wurde ausgelöst

stream-error

Kann mir bitte jemand sagen, wie ich diesen Fehler abfangen kann? Und ob es einen besseren Weg gibt, Dateien zwischen Knotenservern zu übertragen?

Hilfreichster Kommentar

Verwenden Sie nicht socket.io ..., Sie sparen auf lange Sicht Zeit, schauen Sie sich einfach die offenen 300+ offenen Probleme ohne Antworten an ...
Der letzte signifikante Commit war vor 6 Monaten ...

Alle 3 Kommentare

Verwenden Sie einen Ereignis-Listener für das Ereignis „Fehler“. Oder verwenden Sie eine reine Event-Emitter-Bibliothek

Wie verwende ich den Ereignis-Listener für den Fehler? Bitte geben Sie mir ein Beispiel, weil ich einen Fehler für den Client-Socket registriere.

Verwenden Sie nicht socket.io ..., Sie sparen auf lange Sicht Zeit, schauen Sie sich einfach die offenen 300+ offenen Probleme ohne Antworten an ...
Der letzte signifikante Commit war vor 6 Monaten ...

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen