NodeJS: Как получить порт сервера? - PullRequest
118 голосов
/ 30 января 2011

Вы часто видите пример кода hello world для Node, который создает Http-сервер, начинает прослушивать порт, а затем что-то вроде:

console.log('Server is listening on port 8000');

Но в идеале вы бы хотели этого:

console.log('Server is listening on port ' + server.port);

Как получить порт, прослушиваемый сервером в данный момент, без сохранения номера в переменной до вызова server.listen()?

Я уже видел это, но не могу найти его в документации по Node. Может быть, это что-то конкретное, чтобы выразить?

Ответы [ 18 ]

3 голосов
/ 04 апреля 2017
var express = require('express');    
var app = express();
    app.set('port', Config.port || 8881);
    var server = app.listen(app.get('port'), function() {
        console.log('Express server listening on port ' + server.address().port); 
    });

Экспресс-сервер прослушивает порт 8881

3 голосов
/ 04 апреля 2017

Вы можете получить номер порта, используя server.address().port как в коде ниже:

var http = require('http');
var serverFunction = function (req, res) {

    if (req.url == '/') {
        console.log('get method');
        res.writeHead(200, { 'content-type': 'text/plain' });
        res.end('Hello World');
    }

}
var server = http.createServer(serverFunction);
server.listen(3002, function () {
    console.log('server is listening on port:', server.address().port);
});
2 голосов
/ 02 октября 2014

Я тоже задавал себе этот вопрос, затем я пришел Страница руководства Express 4.x , чтобы увидеть этот образец:

var server = app.listen(3000, function() {
   console.log('Listening on port %d', server.address().port);
});
0 голосов
/ 17 марта 2019

Если вы не определили номер порта и хотите знать, на каком порту он работает.

let http = require('http');
let _http = http.createServer((req, res) => {
res.writeHead(200);
res.end('Hello..!')
}).listen();
console.log(_http.address().port);

К вашему сведению, каждый раз, когда он будет работать в другом порту.

0 голосов
/ 13 июля 2017
const express = require('express');                                                                                                                           
const morgan = require('morgan')
const PORT = 3000;

morgan.token('port', (req) => { 
    return req.app.locals.port; 
});

const app = express();
app.locals.port = PORT;
app.use(morgan(':method :url :port'))
app.get('/app', function(req, res) {
    res.send("Hello world from server");
});

app1.listen(PORT);
0 голосов
/ 15 сентября 2016

ниже простого http-сервера и как получить порт прослушивания

var http = require("http");
             function onRequest(request, response) {
               console.log("Request received.");
               response.writeHead(200, {"Content-Type": "text/plain"});
               response.write("Hello World");
               response.end();
             }

             var server =http.createServer(onRequest).listen(process.env.PORT, function(){
            console.log('Listening on port '); //Listening on port 8888
        });

, а затем получить порт сервера, используя:

console.log('Express server started on port %s', server.address().port);
0 голосов
/ 12 декабря 2013

Адрес findandbind npm используется для экспресс / восстановления / подключения: https://github.com/gyllstromk/node-find-and-bind

0 голосов
/ 16 сентября 2016

Более простой способ - просто позвонить app.get('url'), который даст вам протокол, поддомен, домен и порт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...