سؤال

هذا معقد بعض الشيء ولكن هنا يذهب.

لديّ تطبيق Rails يحتوي على عنصر واجهة مستخدم JS صغيرة يتم تحديثها على بعض الأشياء المعالجة الخلفية. يقوم تطبيق Rails بتصوير وظيفة في Redis (عبر Kthxbye) التي تتم معالجتها ثم الانتهاء منها ، تطلق رسالة نشر Redis. تتم مراقبة هذه القناة بواسطة خادم Node.js المسؤول عن التعامل مع الإشعارات وتحديث الواجهة الأمامية على الويب. كل هذا يعمل بشكل جيد في عالم Google Chrome حيث تعمل WebSockets.

ومع ذلك ، يتعين على كل من Firefox و IE التخلف عن حلول أخرى لأنهما لا يدعمان WebSockets (حتى الآن).

حاليًا يبدو أن كلا من النقل الافتراضي لـ XHR. من سجلات node.js. هذا كل شيء جيد وجيد. ومع ذلك ، على IE ، يبدو أن هناك خطأ في طريقة النقل/الاقتراع. من سجلات node.js:

29 Sep 15:30:02 - Initializing client with transport "xhr-polling"
29 Sep 15:30:02 - Client 9219092682469636 connected
29 Sep 15:30:05 - Client 8440734834875911 disconnected
29 Sep 15:30:05 - Client 6149627515114844 disconnected
29 Sep 15:30:07 - Illegal transport "jsonp-polling"
29 Sep 15:30:07 - Illegal transport "jsonp-polling"

لذلك يبدو الأمر كما لو أنه متصل وبمجرد أن يحاول الاستطلاع ، يتم فصله بسبب مشكلة "النقل غير القانوني". أي شخص يعرف من أين يأتي؟

بعض القرائن الأخرى ، يبدو أن موصل الفلاش يتم تحميله بشكل صحيح ، لكنني أفترض أنه لا يعمل أو يفشل في التحميل بطريقة ما لأنه لا يزال يعود إلى توصيل XHR. من IE ، يمكنني رؤية الطلبات الثلاثة التالية يتم تقديمها في كل دورة اقتراع:

GET /socket.io/xhr-polling//1285789236601 HTTP/1.1
Accept: */*
Origin: http://plukevdh-desktop:3000
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
Host: itwebpriv1:8081
Connection: Keep-Alive
Cache-Control: no-cache

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 25
Access-Control-Allow-Origin: undefined
Connection: keep-alive

---

GET /socket.io/xhr-polling//1285789236616 HTTP/1.1
Accept: */*
Origin: http://plukevdh-desktop:3000
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
Host: itwebpriv1:8081
Connection: Keep-Alive
Cache-Control: no-cache

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 24
Access-Control-Allow-Origin: undefined
Connection: keep-alive

---

GET /socket.io/jsonp-polling//1285789241616/0 HTTP/1.1
Accept: */*
Referer: http://plukevdh-desktop:3000/jobs/905390
Accept-Language: en-us
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
Accept-Encoding: gzip, deflate
Host: itwebpriv1:8081
Connection: Keep-Alive
هل كانت مفيدة؟

المحلول

يبدو لي أن لديك إصدارًا أقدم من Socket.io Server والذي لا يحظى بعد بدعم من JSONP. وإصدار عملاء أحدث ... على أي حال في تجربتي ، لا تعمل أجهزة الصراف الآلي للنقل بشكل جيد على أي حال ، لذا لا تهتم بها. في IE ، يجب أن تعمل Flassocket ويجب أن تعمل توصيل XHR أيضًا ، إلا إذا كنت تقوم بتشغيل خادم S.IO على مجال آخر من موقع الويب الخاص بك. إذا كنت تستخدم منفذًا آخر ، فلن يعمل توصيل XHR في الأوبرا ولكن يجب أن تعمل في متصفحات أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top