Socket.io: تتغير سلاسل البيانات عبر المقبس

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

ملاحظة : لأسئلة الدعم ، يرجى استخدام إحدى هذه القنوات: stackoverflow أو Slack

اتريد:

  • [x] أبلغ عن خطأ
  • [] طلب ميزة

السلوك الحالي

عند إرسال كائن كبيانات وداخله باستخدام سلسلة من (أو unicode \u2265 ) فإنه يحولها إلى حرف السلسلة e و trurns إلى d

خطوات إعادة الإنتاج (إذا كان السلوك الحالي خطأ)

جانب العميل

channel.emit('data', {data:'≥'});

جانب الخادم

socket.on('data',({data:bla})=>{
console.log(bla); // prints 'e'
});

ملحوظة : أفضل طريقة للحصول على إجابة سريعة هي تقديم حالة اختبار فاشلة ، عن طريق فك الكمان التالي على سبيل المثال.

سلوك متوقع

أن البيانات ستبقى كما هي باستمرار

اقامة

  • نظام التشغيل: Windows
  • المتصفح: Chrome 62
  • الإصدار socket.io: 1.7.2

معلومات أخرى (مثل stacktraces والمشكلات ذات الصلة واقتراحات كيفية الإصلاح)

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

جربته مع 2.0.4 ، لا يزال يحدث ...
أصلحها بترميز البيانات وفك تشفيرها بهذا الكود:
جانب العميل

function strencode( data ) {
    return encodeURIComponent( escape( JSON.stringify( data ) ) );
}

جانب الخادم

function strdecode( data ) {
    return JSON.parse( unescape( decodeURIComponent( data ) ) );
}

ال 5 كومينتر

يحدث هذا فقط عندما لا تتم ترقية المقبس (أول استخدام) عبر xhr ،
بعد الترقية إلى websocket ، يتم إرسال جميع البيانات بشكل صحيح

انظر # 451 و # 572

حدثت مشكلة بخصوص تحليل utf8 في الإصدار 1.x ، هل يمكنك المحاولة باستخدام الإصدار 2.x؟

متعلق ب:

جربته مع 2.0.4 ، لا يزال يحدث ...
أصلحها بترميز البيانات وفك تشفيرها بهذا الكود:
جانب العميل

function strencode( data ) {
    return encodeURIComponent( escape( JSON.stringify( data ) ) );
}

جانب الخادم

function strdecode( data ) {
    return JSON.parse( unescape( decodeURIComponent( data ) ) );
}

نعم يبدو أن هذا يعمل. شكرا!

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