socket.ioサポートを追加するノード.jsExpressサーバーが機能しています(javascriptクライアントがsocket.io経由で接続できるようにします)。Javascript $ .get()を介してエクスプレスサーバーに接続できますが、CORSエラーが原因でsocket.io.connect()コマンドが失敗します。
私のテストマシンは、クライアントにサービスを提供するApacheを備えたOSXであるため、ポート80が使用されるため、node.js/expressをポート8888で実行しています。ドキュメントに従ってsocket.ioを追加しました。
var exp = express();
var server = require('http').createServer(api.server);
exp.listen(8888);
var io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket) {
console.log('connection');
});
node.jsログに「info:socket.iostarted」が正しく表示されます。
次に、クライアントで、サーバーに接続しようとします...
this.socket = io.connect('http://localhost:8888');
this.socket.on('connect',function() {
socket.emit('install','test');
});
ただし、ChromeのコンソールでCORSエラーが発生します。
XMLHttpRequest cannot load http://localhost:8888/socket.io/1/?t=1358715637192. Origin http://localhost is not allowed by Access-Control-Allow-Origin.
ただし、これは正常に機能します。
$.get('http://localhost:8888',function(e,d){
console.log(e,d);
});
そこで、localhost:8888とlocalhostの両方について、ヘッダーを再確認しました。どちらも、クロスドメイン要求を許可する(必要がある)ヘッダーを適切に返しています...
Access-Control-Allow-Origin:*
何か案は?