Socket.io v1.0.X未知传输“轮询”

时间:2014-05-30 19:24:42

标签: node.js websocket socket.io

Y在连接版本1.0中有一个问题,我在0.9.X版本中没有这个问题。

我在http://app.myhost.com中运行了Django,在http://live.myhost.com:8001

中运行了我的节点服务器

在我将节点服务器连接到节点服务器之前:

客户端:

io.connect(//live.myhost.com:8001);

服务器:

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

但现在我遇到了问题(没有正确使用实时网址):

GET http://app.myhost.com:8000/socket.io/?EIO=2&transport=polling&t=1401468282894-1 404 (NOT FOUND)

如果我重写(io.connect(http://live.myhost.com:8001))现在有一个新问题:

XMLHttpRequest cannot load http://live.myhost.com:8001/socket.io/?EIO=2&transport=polling&t=1401468608168-1. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://app.myhost.com' is therefore not allowed access.

在调试模式下socket.io我有更多信息:

engine:core intercepting request for path "/socket.io/" +0ms
engine handling "GET" http request "/socket.io/?EIO=2&transport=polling&t=1401470024479-48" +0ms
engine unknown transport "polling" +3ms

1 个答案:

答案 0 :(得分:11)

默认Socket.IO 1.0.4允许pollingwebsocket传输。您通过设置自定义传输删除了polling传输。只需返回polling传输回传:

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

2015年4月3日更新

0.9.15是包含有效set方法的最新版本。版本1.0.0-pre删除set方法,并通过服务器初始化引入设置。版本1.0.0-pre2添加了原始set方法以实现向后兼容。使用新的表示法:

var socket = io({
  transports: [
    'websocket', 
    'flashsocket', 
    'htmlfile', 
    'xhr-polling', 
    'jsonp-polling', 
    'polling'
  ]
});