EC2与socket.io

我已经为我的节点应用程序设置了一个aws微型实例。 我也使用socket.io 。 我收到以下错误:

 GET http://localhost:3000/socket.io/1/?t=1393065240268 net::ERR_CONNECTION_REFUSED 

在应该创build套接字连接的时候在控制台中。 除此之外,节点应用程序的作品。 我怀疑GET不应该是对localhost而是对服务器的地址。

请注意,在服务器端的节点日志中,它服务于socket.io

 debug - served static content /socket.io.js 

这里是我的服务器的安全组的图片:

安全组

Socket.io设置:

 env = process.env.NODE_ENV || 'development', packageJson = require('../package.json'), http = require('http'), express = require('express'), RedisStore = require('connect-redis')(express), SessionSockets = require('session.socket.io'), path = require('path'), settings = require('./settings'), expose = require('express-expose') //Configure server for io and session.socket.io tmpApp = express(), tmpServer = http.createServer(tmpApp), io = require('socket.io').listen(tmpServer), appCookieParser = express.cookieParser(settings.cookie.secret), appRedisStore = new RedisStore(), sessionIO = new SessionSockets(io, appRedisStore, appCookieParser) global.App = { app: tmpApp, server: tmpServer, port: process.env.PORT || 3000, sessionIO: sessionIO, io: io, start: function() { var setUp = this.util('setUp'), socketHandler = require('./socketHandler'), self = this setUp.initialize(function(err, waitingGames) { if (err) { console.log('error at initializing the application') process.exit(0) } if (!self.started) { self.started = true self.server.listen(self.port) socketHandler() console.log("Running App Version " + App.version + " on port " + App.port + " in " + App.env + " mode") } }) }, ... } 

UPDATE

当我改变我的端口为80我得到一个不同的错误:

  XMLHttpRequest cannot load http://localhost/socket.io/1/?t=1393067003774. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://ec2-54-214-136-70.us-west-2.compute.amazonaws.com' is therefore not allowed access. 

我发现了这个问题。 这是在客户端。 我连接到localhost 。 这是一个愚蠢的错误,但在开发过程中,您不会注意这些细节, socket.io应该连接到您的内容的根目录,这似乎很自然。

由于我使用的EC2和每次重新启动后,我得到了不同的DNS地址,我已经发送到页面,我在初始化socket.io正确的req.headers.host (使用express-expose )。