Socket.io: Nodejs socket.io خطأ غير معالج بمقبس الويب

تم إنشاؤها على ٣١ أكتوبر ٢٠١٨  ·  3تعليقات  ·  مصدر: socketio/socket.io

أنا أستخدم مكتبة socket.io-stream لنقل الملفات بين خوادم عقدة.

الخادم أ: (إرسال ملف)

""
var clientIO = يتطلب ('socket.io-client') ؛
var ss = يتطلب ('socket.io-stream') ؛

var clientSocket = clientIO ( http://ServerB_Address ) ؛
clientSocket.on ('خطأ'، (خطأ) => {
console.log (خطأ) ؛
}) ؛

var stream = ss.createStream ({objectMode: true}) ؛
ss (clientSocket) .emit (إرسال ملف ، دفق ، بيانات) ؛
var uploadedBytes = 0 ؛
فار من = 0 ؛
var reader = fs.createReadStream (filePath، {start: from}) ؛
Reader.pipe (تيار)
.on ('error'، (error) => {
console.log (خطأ) ؛
})
.on ('data'، (chunk) => {
uploadedBytes + = Buffer.byteLength (قطعة) ؛
}) ؛

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

إنه يعمل بشكل جيد ، ولكن عند نقل الملف إذا تم إيقاف خادم العقدة الثاني ، فإن التطبيق الموجود في الخادم الآخر يتعطل ويتم إلقاء حدث خطأ لم تتم معالجته

stream-error

هل يمكن لأي شخص أن يخبرني كيف يمكنني اكتشاف هذا الخطأ؟ وما إذا كانت هناك طريقة أفضل لنقل الملفات بين خوادم العقدة؟

التعليق الأكثر فائدة

لا تستخدم socket.io ... ، ستوفر الوقت على المدى الطويل ، ما عليك سوى إلقاء نظرة على أكثر من 300 مشكلة مفتوحة بدون إجابات ...
آخر التزام مهم كان قبل 6 أشهر ...

ال 3 كومينتر

استخدم مستمع الحدث لحدث "الخطأ". أو استخدم مكتبة باعث الأحداث الخالصة

كيفية استخدام مستمع الحدث للخطأ؟ من فضلك أعطني مثالا ، لأنني سجلت خطأ لمقبس العميل.

لا تستخدم socket.io ... ، ستوفر الوقت على المدى الطويل ، ما عليك سوى إلقاء نظرة على أكثر من 300 مشكلة مفتوحة بدون إجابات ...
آخر التزام مهم كان قبل 6 أشهر ...

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات