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

Posted

技术标签:

【中文标题】socket.io 不适用于传输:[\'xhr-polling\']【英文标题】:socket.io doens't work with transports: [ 'xhr-polling' ]socket.io 不适用于传输:['xhr-polling'] 【发布时间】:2015-05-04 10:39:14 【问题描述】:

我正在尝试在 socket.io 中测试回退到轮询,以验证我的应用是否可以与出于任何原因不支持 websocket 的客户端一起使用。

我将 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

【问题讨论】:

【参考方案1】:

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

var options = 
   transports: [ 'polling' ]
;

【讨论】:

以上是关于socket.io 不适用于传输:['xhr-polling']的主要内容,如果未能解决你的问题,请参考以下文章

Socket.io 不适用于 nginx

CORS 不适用于 hapijs 和 socket.io

Socket.io + NodeJS 不适用于 Heroku

socket.io 广播不适用于 React

socket.io 连接不适用于 react.js

node.js 中的 socket.io 不适用于 3G 移动网络