2016-08-09 5 views
0

私は何をしているのか、何が欲しいのかを説明するためのコードスニペットを持っています。同じポートでノード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'); 
}); 

しかし、同じエクスプレスでnode express、socket.io、およびbinaryServerを実行したい(この場合は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

ありがとうマット、それは私のために働いた。 –

+0

素晴らしい。私はそれを反映する答えを更新しました – Matt

関連する問題