2016-08-09 3 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와 node.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'); 
}); 

는하지만 노드 익스프레스를 실행하려면, Socket.IO에와 binaryServer는 동일한 포트 익스프레스에 (이 경우 8080)를 실행한다. 제안 사항이 있으십니까?

+1

동일한 포트에서 2 개의 서비스를 실행할 수 없습니다. 당신은 그것에 대해 별도의 포트를 지정해야합니다. –

+0

@Deepak Sharma - 위의 코드에서와 같이 동일한 포트에서 2 개의 서비스를 실행할 수 있습니다. 하지만 동일한 포트에서 2 개 이상의 서비스를 실행하고 싶습니다. –

+0

Socket.io는 바이너리 전송을 지원합니다. –

답변

1

동일한 http server 인스턴스에 SocketIO 및 binaryServer를 모두 연결해야하며 단일 인스턴스를 가동해야합니다.

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

매트 감사합니다, 그것은 나를 위해 일했습니다. –

+0

좋아요. 그 대답을 반영하도록 업데이트했습니다. – Matt

관련 문제