簡體   English   中英

EC2與socket.io

[英]EC2 with socket.io

我為我的節點應用程序設置了一個aws微實例。 我也使用socket.io 我收到以下錯誤:

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

在應該創建套接字連接時在控制台中。 除此之外,節點應用程序也可以。 我懷疑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 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM