私のアプリは、あるポート(process.env.PORT)でリッスンするエクスプレスサーバーを持っています。また、別のポートを使用するWebソケットも必要です。私は、このセットアップでエクスプレス3を使用するために使用される:ioServerを作成するときに、何の特定のポートが必要とされないよう2つのポートを持つHerokuのNodeJSとsocket.ioアプリケーション
var express = require('express'),
http = require('http'),
io = require('socket.io'),
app = express();
server = http.Server(app);
ioServer = io(server);
ioServer.on('connection', callback);
server.listen(process.env.PORT || 3000, function() {
console.log('App listening on ' + server.address().port);
});
上記のコードでは、うまく働きました。私は4を表現するために切り替えられ、HerokuのののWebSocketサービスを使用して開始した後、しかし、私はこのようなポートを指定する必要がありました:私はHerokuの上でアプリを実行したとき、私が得るため
var WebSocketServer = require('ws').Server,
port = 5000,
server = http.createServer(app);
server.listen(port);
var wss = new WebSocketServer({server: server});
wss.on('connection', callback);
app.listen(app.get('port'), function() {
console.log('Express server listening.'));
});
この新しいセットアップ働くことはありませんエラー同じポートを2回使用することができないという文句:
Error: listen EADDRINUSE :::40854
セットアップロジックが明確エクスプレス4にポートを割り当てるため除いて基本的に同じであるので、なぜ私のコードの作品は、Express 3で行ったではなく、エクスプレス4?私はこれをどのように修正すべきですか?