socket.io 不适用于传输:[ 'xhr-polling' ]

socket.io doens't work with transports: [ 'xhr-polling' ]

我正在尝试测试回退到 socket.io 中的轮询,以验证我的应用程序是否适用于出于任何原因不支持 websockets 的客户端。

我正在使用非常 basic server/client example 的 Express 4。它适用于:

// client-side
var options = {
   transports: [ 'xhr-polling', 'websocket' ]
};

var socket = io.connect('http://localhost:8080', options);
socket.on('news', function (data) {
  console.log(data);
  socket.emit('my other event', { my: 'data' });
});

但是,如果我从传输中删除 'websocket',则客户端不会发生任何事情 - 没有错误,没有事件,什么也没有。在服务器端我只看到:

Tue, 03 Mar 2015 16:45:49 GMT socket.io:server serve client 304

我打开源代码,发现 socket.io.js 现在正在检查字符串 polling 而不是 xhr-polling。所以这有效:

var options = {
   transports: [ 'polling' ]
};