我需要对 IE 使用 jsonp-polling,对 Firefox 使用 xhr-polling,所以我
尝试在客户端定义传输类型,如下所示:
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
选项.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"]
,其序列与我的序列相同
在服务器端定义。
为什么不使用之前的选项?