我需要使用JSONP輪詢的IE定義傳輸類型,以及XHR輪詢爲Firefox,所以我 試圖定義客戶端上這樣類型的傳輸方式:在客戶端
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上測試了它,並在socket.io-client lib上添加了日誌記錄。 在
https://github.com/LearnBoost/socket.io-client/blob/master/dist/socket.io.js#L1509
的option.transports是["xhr-polling", "flashsocket", "htmlfile", "xhr-polling", "jsonp-polling"]
,這是正確的。然而,在
https://github.com/LearnBoost/socket.io-client/blob/master/dist/socket.io.js#L1679
我不知道爲什麼運輸改爲["htmlfile", "jsonp- polling", "xhr-polling"]
,具有相同的序列我 在服務器端定義。
爲什麼不使用前面的選項?
不知道這裏的問題是,上面給出的序列 - 「xhr-polling」等被忽略,而是「htmlfile」先行?這個問題是否與socket.io'0.8.7'一起復制? –
謝謝你的問題!這是我與FireFox惡夢的答案。 Socket.io文檔太糟糕了。這是我找到傳輸選項的唯一地方。 :) –