Определите виды транспорта на стороне клиента - PullRequest
11 голосов
/ 10 августа 2011

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

Почему он не использует предыдущую опцию?

Ответы [ 2 ]

19 голосов
/ 15 августа 2012

Исправлена ​​ошибка в socket.io версии 0.9.6, я могу использовать ее, и она отлично работает:

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

В версии 1.0.0 и выше:

socket = io.connect(HOST_REMOTE, {
    transports: ['polling']
});
1 голос
/ 07 апреля 2012

есть ошибка в socket.io.client.

, поэтому вы не можете устанавливать транспорты в клиенте ...

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

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

должно быть io.util.merge(this.options, options,0);....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...