2017-03-04 5 views
0

ポート3000で動作するノードアプリケーションを開発しました。私はMEAN Stackを使用しました。 はまた、いくつかのチュートリアルを参照私は、ポートに3001すでに開発済みのノードアプリケーションとsocket.ioを統合する方法

を実行しているsocket.ioチャットアプリケーションを開発してどのように私は/私のMEANスタックアプリにこのチャットアプリケーションを追加統合することができます。どのように同時に2つのサーバー/ポートを実行するのですか?

var express = require('express'), 
app = express(), 
server = require('http').createServer(app), 
io = require('socket.io').listen(server), 
nicknames = []; 

server.listen(3001); 

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

io.sockets.on('connection',function(socket){ 
socket.on('new user', function(data, callback){ 
    if (nicknames.indexOf(data) != -1){ 
     callback(false); 
    }else { 
     callback(true); 
     socket.nickname = data; 
     nicknames.push(socket.nickname); 
     updateNicknames(); 
    } 

}); 

function updateNicknames(){ 
    io.sockets.emit('usernames', nicknames); 
} 


socket.on('send message',function(data){ 
    io.sockets.emit('new message',{msg:data, nick:socket.nickname}); 

}); 

socket.on('disconnect',function(data){ 
    if(!socket.nickname) return; 
    nicknames.splice(nicknames.indexOf(socket.nickname), 1); 
    updateNicknames(); 
}); 

} socket.io

)。

+0

あなたはどちらかだけの同じプロセスに2を組み合わせることができます(ちょうど同じNode.jsのプロセスで両方のサーバーを実行する)か、同じポート3000のWebサーバー上のsocket.ioアプリケーションを実行することができます。 Socket(およびその下にあるwebSockets)は、他のタイプのWebリクエストに使用されるWebサーバーを共有できるように意図的に設計されています。 – jfriend00

+0

両方のアプリケーションを同じポート上で実行しようとしましたが、最初のアプリケーションだけが動作しています。もう1つは、ポートがすでに使用中であることを示しています。どうすればいいですか、私はどこでこれを参照できますか? –

+0

あなたの他のサーバーと同じポートにsocket.io用の新しいサーバーを作成するのではなく、別のサーバーに渡すだけで、socket.ioはそのサーバーを共有します。 – jfriend00

答えて

0

グローバルイベントを作成し、それらの間で通信することができます。 expressのためにmiddlewereにemit関数を追加することができます。

https://nodejs.org/api/events.html

関連する問題