首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EC2与socket.io

EC2与socket.io
EN

Stack Overflow用户
提问于 2014-02-22 10:40:17
回答 1查看 11.5K关注 0票数 8

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

代码语言:javascript
复制
GET http://localhost:3000/socket.io/1/?t=1393065240268 net::ERR_CONNECTION_REFUSED

当需要创建套接字连接时,在控制台中。除此之外,节点应用程序也能工作。我怀疑GET不应该指向localhost,而应该指向服务器的地址。

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

代码语言:javascript
复制
debug - served static content /socket.io.js

以下是我的服务器的安全组的图片:

Socket.io设置:

代码语言:javascript
复制
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")
                }
            })

    },
 ...
 }

更新

当我将端口更改为80时,会得到一个不同的错误:

代码语言:javascript
复制
 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. 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-22 12:52:19

我发现了问题。是在客户端。我正在连接到localhost。这是一个愚蠢的错误,但在开发过程中,您没有注意到这些细节,而且socket.io应该从服务内容的位置连接到根,这似乎是很自然的。

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

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21953102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档