如何在同一端口上启动node express,binaryserver和socket.io?

时间:2016-08-09 06:33:33

标签: node.js 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 个答案:

答案 0 :(得分: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,以便二元服务器不会与您的任何应用发生冲突。客户端连接也需要此路径。