1

私はソケットioを持っていて、ノードエクスプレスjsサーバーは両方とも同じポートを今聞きます。 AWS ElasticBeanStalkでホストされています。その良い仕事。 セキュリティの制限により、ソケットioを別のポートに移動する必要があります。ノードjs appと同じコードベースの一部です。 ソケットioの別のポートを聞くことはできますか?それはうまくいくのですか?ElasticBeanStalkで何を変更すればいいですか?新しいポートを開く必要がありますかポートに制限がありますか?express jsとsocket ioを異なるポートで聴く方法

+0

socket.ioをWebサーバーとは別のポートに移動する必要があるセキュリティ上の制限はありますか?通常、両方のポートが同じであるようにセキュリティ制限があります。これが、websocket/socket.ioがhttpサーバとポートを共有するように設計された理由のすべてです。 – jfriend00

+0

Socket ioは、イベントの公開にのみ使用されます。したがって、このユースケースでは保護する必要はありません。私たちのノードのアプリケーションは完全に保護されており、認可ベアラートークンが必要です。ノードが動作しているポートはAPIマネージャにのみ公開されます。したがって、ソケットioは、APIマネージャをバイパスするために別のポートにある必要があります – Jocket

+0

あなたは確かに同じnode.jsアプリケーション内のsocket.ioの別のポートでリスンすることができます。通常のsocket.io接続(いくつかのポーリング要求で始まるデフォルト接続)では、ブラウザから接続が行われている場合はCORSを有効にして、ブラウザが別のポートへの接続を許可する必要がありますウェブページあるいは、CORSによって制限されていないwebSocketですぐに開始するようにsocket.ioクライアントを変更することもできます。私は、新しいポートを使用するためにAWSの変更が必要になるのを手助けすることはできません。 – jfriend00

答えて

0

docsは、Express または経由で標準ノードHTTP経由で接続する例を示しています。技術的には、両方を一緒に融合させ、異なるポートで聞くことができます。

var exApp = require('express')(); 
var exServer = require('http').Server(exApp); 

var ioApp = require('http').createServer(handler); 
var io = require('socket.io')(ioApp); 

exServer.listen(80); 
ioApp.listen(81); 

function handler (req, res) { 
    res.writeHead(200).end({}); 
} 

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

// Then whatever you want to do with `io`, and `exApp`. 

あなたがlocalhost:80に行けば、あなたはエクスプレスアプリが務めますよ、とあなたはlocalhost:81にsocket.ioリクエストを送信する場合、それは私が技術的にこれをテストしていませんio.connection()

をトリガーする必要があり、私が激しく怒っているかどうか知らせてください。それについてさらに考えてみましょう。

+0

私はelasticbean stalkの設定変更にもっと関心があり、nginx – Jocket

関連する問題