1

我刚刚将一个 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);

我该如何解决?

4

2 回答 2

5

我所要做的就是删除客户端代码上的 url:

var socket = io.connect();

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

于 2013-01-15T02:12:04.837 回答
2

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

在客户端;进行此更改:

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 版本中监听的方式,所以使用上面的版本。

除此之外,一切看起来都很好。告诉我你是否仍然无法解决这个问题。

于 2013-01-10T06:08:20.003 回答