Мне нужно использовать jsonp-polling для IE и xhr-polling для 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 "]
, который имеет ту же последовательность, что и я
определено на стороне сервера.
Почему не используется предыдущий вариант?