2011-08-10 17 views
11

istemci tarafında taşıma türlerini tanımlama ve Firefox için xhr-yoklama, bu yüzden böyle istemci tarafında taşıma türlerini tanımlamak çalıştı:Ben IE için jsonp-yoklama kullanmak gerekir

if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); 
      var socket = io.connect(VG.NODE_SERVER_URL,{ 
        transports:['xhr-polling'] 
      }); 
    } else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ 
      var socket = io.connect(VG.NODE_SERVER_URL,{ 
        transports:['jsonp-polling'] 
      }); 
    } else { 
      var socket = io.connect(VG.NODE_SERVER_URL); 
    } 

Firefox'ta test ettim ve socket.io-client lib'inde kayıt ekledim.

At

https://github.com/LearnBoost/socket.io-client/blob/master/dist/socket.io.js#L1509

option.transports doğru olan, ["xhr-polling", "flashsocket", "htmlfile", "xhr-polling", "jsonp-polling"] olduğunu. Ancak,

https://github.com/LearnBoost/socket.io-client/blob/master/dist/socket.io.js#L1679

azından ben nakliye ben sunucu tarafında ne tanımlandığını aynı diziye sahip olduğu, ["htmlfile", "jsonp- polling", "xhr-polling"] değiştirmek neden bilmiyorum.

Neden önceki seçeneği kullanmıyorsunuz?

+0

Burada sorunun ne olduğundan emin değilsiniz, yukarıdaki - xhr-polling' vb. Verilen dizinin göz ardı edilmesi ve bunun yerine htmlfile'nin ilk girmesi mi? Bu sorun socket.io '0.8.7' ile çoğaltılıyor mu? –

+0

Sorunuz için teşekkür ederiz! FireFox'la kabusumun cevabıydı. Socket.io belgeleri çok kötü .. Taşıma seçeneklerini bulduğum tek yer burası. :) –

cevap

18

böcek şimdi socket.io sürümü 0.9.6 düzeltilmiştir olmalıdır ... istemci taşımalar ayarlayamıyor ve işe yarıyor ince:

socket = io.connect(HOST_REMOTE, { 
    transports: ['xhr-polling'] 
}); 
sürüm 1.0.0 içinde

ve yukarıda:

socket = io.connect(HOST_REMOTE, { 
    transports: ['polling'] 
}); 
+2

Geçerli (1.3.3) kaynak 'xhr-polling' yerine 'yoklama' kullanıyor görünüyor. –

+0

Eğer xhr-polling ve connet ios, android ve html5 için yoklama kullanıyorsanız, o zaman herhangi bir zaman veya başka herhangi bir bağlantı kes ... –

1

socket.io.client dosyasında bir hata var.

böylece Bunu kullanabilirim,

function Socket (options) { 
this.options = { 
    port: 80 
    , secure: false 
.... 
}; 

io.util.merge(this.options, options); 
.... 
}; 

io.util.merge(this.options, options,0);....