AppFog node.js客户端无法加载socket.io

我只是将一个node.js站点部署到AppFog。 当我去“http:// localhost:8080”时,它在本地工作正常,但是当我到达AppFog上的一个: http ://bandwithfriends.aws.af.cm/时,我得到以下Chrome控制台错误:

XMLHttpRequest cannot load http://localhost:8080/socket.io/1/?t=1357769454152. Origin http://bandwithfriends.aws.af.cm is not allowed by Access-Control-Allow-Origin. 

服务器代码:

 var app = require('http').createServer(handler), io = require('socket.io').listen(app), static = require('node-static'); // for serving files // This will make all the files in the current folder // accessible from the web var fileServer = new static.Server('./'); app.listen(process.env.VCAP_APP_PORT || 8080); io.configure('development', function(){ io.set('transports', ['xhr-polling']); }); 

客户端代码index.html:我包括这样的socket.io:

 <script src="/socket.io/socket.io.js"></script> 

客户端代码script.js:

 var url = 'http://localhost:8080'; var socket = io.connect(url); 

我该如何解决?

我所要做的只是去除客户端代码中的url:

 var socket = io.connect(); 

希望这可以帮助其他人有同样的问题!

你的客户端和服务器端都是错误的。

在客户端; 做这个改变:

 var url = io.connect('http://<your domain name>'); //For example: var url = io.connect('http://shash7.ap01.aws.af.cm'); 

在服务器端,你需要像这样实现socket.io:

 var app = require('express')() , server = require('http').createServer(app) , io = require('socket.io').listen(server); server.listen(80); 

上面的代码是从socket.io站点获取的。 他们改变了socket.io在0.9版本中侦听的方式,所以使用上面的版本。

除此之外,一切看起来都很好。 告诉我,如果你仍然无法弄清楚这一点。