如何使快递js和socket io听不同的端口

时间:2017-12-04 05:50:43

标签: amazon-web-services websocket socket.io elastic-beanstalk amazon-elastic-beanstalk

我的socket io和Node express js服务器现在都收听相同的端口。它托管在AWS ElasticBeanStalk中。它的工作性很好。 现在由于安全限制,必须将socket io移动到不同的端口。它是与节点js app相同的代码库的一部分。 我可以为socket io听另一个端口吗?这会起作用吗?我需要在ElasticBeanStalk中做些什么改变?必须打开任何新端口或端口是否有任何限制?

1 个答案:

答案 0 :(得分:0)

docs提供了通过标准节点HTTP通过Express 连接的示例。所以从技术上讲,你可以把它们融合在一起,然后听不同的端口。

var exApp = require('express')();
var exServer = require('http').Server(exApp);

var ioApp = require('http').createServer(handler);
var io = require('socket.io')(ioApp);

exServer.listen(80);
ioApp.listen(81);

function handler (req, res) {
  res.writeHead(200).end({});
}

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

// Then whatever you want to do with `io`, and `exApp`.

如果您转到localhost:80,则会提供Express应用,如果您向localhost:81发送socket.io请求,则应触发io.connection()

我还没有经过技术测试,所以请告诉我,如果我疯了,我会进一步思考它。