仅在socket.io上使用xhr轮询

仅在socket.io上使用xhr轮询,socket.io,Socket.io,我在socket.io v0.9上只使用xhr轮询,但现在在1.0中找不到此选项。您知道,Antivuse禁止websocket,因此我想使用xhr轮询。如何实现此目的?有关如何设置允许的socket.io传输的几个示例如下: 以下是一些: var io = require('socket.io').listen(80); io.configure('production', function(){ io.enable('browser client etag'); io.set('l

我在socket.io v0.9上只使用xhr轮询,但现在在1.0中找不到此选项。您知道,Antivuse禁止websocket,因此我想使用xhr轮询。如何实现此目的?

有关如何设置允许的socket.io传输的几个示例如下:

以下是一些:

var io = require('socket.io').listen(80);

io.configure('production', function(){
  io.enable('browser client etag');
  io.set('log level', 1);

  io.set('transports', [
    'websocket'
  , 'flashsocket'
  , 'htmlfile'
  , 'xhr-polling'
  , 'jsonp-polling'
  ]);
});

io.configure('development', function(){
  io.set('transports', ['websocket']);
});
或者仅仅是这样:

// enable all transports (optional if you want flashsocket support, please note that some hosting
// providers do not allow you to create servers that listen on a port different than 80 or their
// default port)
io.set('transports', [
  'xhr-polling'
]);
或者,可以在服务器初始化时设置选项:

var socket = require('socket.io').listen(80, {
  // options can go here
  transports: ['xhr-polling']
});

为什么反病毒会禁止webSocket?那对我来说毫无意义。从反病毒程序的角度来看,它只是一个长期运行的出站HTTP连接,它已经允许了,并且它不会比任何HTTP连接承担更多的风险。我可以看出个人防火墙可能会对长时间运行的webSocket很挑剔(虽然这通常不是问题,因为它是一个出站HTTP连接)。首先,我在webSocket上运行它,一些用户对我说“我不能发送消息”,然后我切换到xhr轮询,现在一切都好了。查看文档,这是socket.io 1.0的底层传输层抽象,它看起来像是被抽象掉了,这样你的socket.io代码看起来就像是在使用WebSocket,即使它真的是xhr-polling。socket.io文档不太清楚如何做到这一点(我也不记得在哪里看到过它),但是在某个地方有一个选项允许您列出socket.io引擎允许使用的传输。您应该只能指定xhr轮询,但不必这样做。对于大多数支持WebSocket的用户来说,应该可以使用WebSocket,当WebSocket不受支持时,让引擎返回到xhr轮询。WebSocket比xhr轮询更高效。@Okan-这回答了你的问题吗?很确定这在socket.io 1.0中不再有效