2つのノードサーバー間でファイルを転送するためにsocket.io-streamライブラリを使用しています。
サーバーA :(ファイルの送信)
`` `
var clientIO = require( 'socket.io-client');
var ss = require( 'socket.io-stream');
var clientSocket = clientIO( http://ServerB_Address
);
clientSocket.on( 'error'、(error)=> {
console.log(エラー);
});
var stream = ss.createStream({objectMode:true});
ss(clientSocket).emit( 'send-file'、stream、data);
var uploadBytes = 0;
var from = 0;
var reader = fs.createReadStream(filePath、{start:from});
reader.pipe(ストリーム)
.on( 'error'、(error)=> {
console.log(エラー);
})
.on( 'data'、(chunk)=> {
uploadBytes + = 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);
});
});
});
正常に動作しますが、2番目のノードサーバーが停止している場合にファイルを転送すると、他のサーバーのアプリがクラッシュし、未処理のエラーイベントがスローされました
誰かがこのエラーをキャッチする方法を教えてもらえますか? そして、ノードサーバー間でファイルを転送するためのより良い方法がある場合はどうなりますか?
「エラー」イベントにはイベントリスナーを使用します。 または、純粋なイベントエミッタライブラリを使用します
エラーに対してイベントリスナーを使用するにはどうすればよいですか? クライアントソケットのエラーを登録しているので、例を挙げてください。
socket.ioを使用しないでください...、長期的には時間を節約できます。答えのない未解決の300以上の未解決の問題を確認してください...
最後の重要なコミットは6か月前でした...
最も参考になるコメント
socket.ioを使用しないでください...、長期的には時間を節約できます。答えのない未解決の300以上の未解決の問題を確認してください...
最後の重要なコミットは6か月前でした...