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
答案 0 :(得分:11)
默认Socket.IO 1.0.4
允许polling
和websocket
传输。您通过设置自定义传输删除了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'
]
});