2016-08-09 59 views
0

我有代碼片段來解釋我在做什麼,我想要什麼。如何在同一端口啓動node express,binaryserver和socket.io?

var express = require('express'); 
var http = require('http'); 
var app = express(); 

app.use('/', express.static(__dirname + '/static')); 

var BinaryServer = require('binaryjs').BinaryServer; 
var server = http.createServer(app); 

var binaryServer = new BinaryServer({server:server}); 


var ioServer = http.createServer(app); 

var io = require('socket.io').listen(ioServer); 

我可以在同一個端口上運行node express和socket.io。

ioServer.listen(8080, function(){ 
    console.log('server running at localhost:8080'); 
}); 

可以使用node express和binaryServer完成相同的操作。

server.listen(8080, function(){ 
    console.log('server running at localhost:8080'); 
}); 

但我想運行節點express,socket.io和binaryServer在相同的端口運行express(8080在這種情況下)。 有什麼建議嗎?

+1

您不能在同一端口上運行2個服務。你必須爲它指定單獨的端口。 –

+0

@Deepak Sharma - 我可以在上面的代碼中顯示的同一端口上運行2個服務。但是我想在同一端口上運行2個以上的服務 –

+0

Socket.io支持二進制傳輸。 –

回答

1

您需要將SocketIO和binaryServer連接到相同的http server實例,然後將該單個實例向上連接。

var app = require('express')(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 
var binaryServer = new BinaryServer({ server:server, path: '/binary'}); 

server.listen(8080, function(){ 
    console.log('http/socket/binary server running at localhost:8080'); 
}); 

設置path所以binaryServer不與任何您的應用程序的衝突。此路徑在客戶端連接中也是必需的。

+0

Thankyou墊,它爲我工作。 –

+0

太好了。我已經更新了答案以反映這一點 – Matt

相關問題