@Denisca2828

Как слушать несколько портов и адресов в http.js?

Как слушать несколько портов и адресов в http.js?
Пример для одного порта и адреса:
var fs = require("fs");
var rd = require("readline-sync");
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

var config = JSON.parse(fs.readFileSync("./config.json"));
var port = 0;
switch(config.port){
	case "default":
		port = 3000;
	break;
	case "input":
		port = rd.question("Enter port, please: ");
	break;
	default:
		if(config.port / 1 != NaN){
			port = config.port;
		}else{
			throw new Error("Please check the port in config file.");
		}
	break;
}

app.use((req, res, next)=>{
  	res.write("Hello, world!");
  	res.end();
})

io.on('connection', function(socket){});

http.listen(port, config.address, function(){
	console.log("Server is started on address: "+config.address+" and port: "+port);
});


А как сделать для нескольких
  • Вопрос задан
  • 758 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
Придется поднять 2 инстанса http сервера, каждый на своем порту и адресе.
В принципе их можно будет использовать с общим app, так как и у req и у res есть свойство socket, являющееся инстансом net.Socket, а значит из него можно получить адрес и порт:
https://nodejs.org/dist/latest-v14.x/docs/api/http...
https://nodejs.org/dist/latest-v14.x/docs/api/http...
https://nodejs.org/dist/latest-v14.x/docs/api/net....
var app = require('express')();
var http = require('http');
var server1 = http.createServer(app);
var server2 = http.createServer(app);

server1.listen(PORT1, ADDRESS1);
server2.listen(PORT2, ADDRESS2);

io правда придется создать 2 инстанса, но обработчики событий опять же можно навесить общие.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы