【问题标题】:How to start node express, binaryserver and socket.io on same port?如何在同一端口上启动 node express、binaryserver 和 socket.io?
【发布时间】:2016-08-11 08:37:25
【问题描述】:

我有代码 sn-p 来解释我在做什么以及我想要什么。

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 上运行 node express、socket.io 和 binaryServer(在本例中为 8080)。 有什么建议吗?

【问题讨论】:

  • 您不能在同一个端口上运行 2 个服务。您必须为其指定单独的端口。
  • @Deepak Sharma - 我可以在同一个端口上运行 2 个服务,如上面的代码所示。但我想在同一个端口上运行 2 个以上的服务
  • Socket.io 支持二进制传输。
  • @Ben Fortune - 感谢您的建议,但我不想更改我的书面代码。
  • 二进制服务器包完全是多余的。

标签: node.js 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 不会与您的任何应用程序发生冲突。客户端连接中也需要此路径。

【讨论】:

    猜你喜欢
    • 2015-01-07
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 2022-01-10
    • 2012-08-27
    • 2018-04-27
    • 1970-01-01
    相关资源
    最近更新 更多