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 に答える