2016-08-09 51 views
0

Ich habe Code-Schnipsel zu erklären, was ich tue und was ich will.Wie node express, binaryserver und socket.io am gleichen Port starten?

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

Ich kann Node Express und socket.io am gleichen Port ausführen.

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

Dasselbe kann mit Knoten Express und BinaryServer durchgeführt werden.

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

Aber ich möchte Knoten ausdrücklich laufen, Socket.io und binaryServer auf demselben Port Express ausgeführt wird (8080 in diesem Fall). Irgendwelche Vorschläge?

+1

Sie können nicht 2 Dienste auf demselben Port ausführen. Sie müssen einen separaten Port dafür angeben. –

+0

@ Deepak Sharma - ich kann 2 Dienste auf dem gleichen Port wie im obigen Code gezeigt ausführen. Aber ich möchte mehr als 2 Dienste auf dem gleichen Port ausführen –

+0

Socket.io unterstützt die binäre Übertragung. –

Antwort

1

Sie müssten sowohl die SocketIO als auch binaryServer an dieselbe Instanz anhängen und dann diese einzelne Instanz heraufbringen.

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

Stellen Sie die path so binaryServer nicht mit irgendwelchen Ihrer Apps kollidiert. Dieser Pfad wird auch in den Clientverbindungen benötigt.

+0

Danke Mat, es hat für mich funktioniert. –

+0

Großartig. Ich habe die Antwort aktualisiert, um das zu reflektieren – Matt