2017-03-04 47 views
0

我開發了一個在端口3000上運行的節點應用程序。我已經使用了MEAN Stack。 同時參考一些教程,我開發了一個在端口3001上運行的socket.io聊天應用程序。如何將socket.io與已開發的節點應用程序集成

如何將此聊天應用程序集成/添加到我的MEAN Stack應用程序中。如何同時運行兩個服務器/端口?

socket.io

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(); 
}); 

});

+0

您可以只將二者結合起來到相同的過程(只運行在同一個Node.js的過程兩臺服務器),也可以運行相同的端口3000的Web服務器上的應用程序socket.io。套接字(以及它下面的webSockets)是專門設計的,因此它們可以共享一個用於其他類型Web請求的Web服務器。 – jfriend00

+0

我試圖在同一個端口上運行這兩個應用程序,但只有第一個正在工作。另一個顯示該端口已被使用。我該如何做到這一點,我可以在哪裏提到這一點? –

+0

而不是在與其他服務器相同的端口上爲socket.io創建新服務器,而只需將它傳遞給其他服務器,然後socket.io將僅共享該服務器。 – jfriend00

回答

相關問題