Node.js, кажется, игнорирует мой IP-адрес, который я даю, вместо этого он использует localhost для открытия сервера - PullRequest
0 голосов
/ 02 июня 2018

Я пытался решить это самостоятельно, но мне не удалось.Сначала я просто пытался создать самый простой сервер localhost, какой только мог, и это сработало, поэтому я подумал об онлайн-сервере (с помощью переадресации портов), чтобы мои друзья могли проверить мой код.Я думаю, что-то я сделал совершенно неправильно, поэтому я спрашиваю вас.Код:

var http = require('http');

var options = {
    hostname: '178.217.195.9',
    port: 45555
};

var server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end("working?");
});

server.listen(options, () => {
  console.log(`Server running at 178.217.195.9:45555`);
});`

Источник: https://nodejs.org/docs/v8.11.2/api/synopsis.html

Я пытался запустить этот код на последней версии (10.3.0), а сегодня я попробовал с рекомендуемой (8.11.2).Без изменений, так что, думаю, это моя вина.

Что происходит?Когда я проверяю (после переадресации порта) 178.217.195.9:45555, он не существует.

Но когда я проверяю localhost: 45555, он работает.Я не знаю, что сказать по этому поводу.

Странно, как говорится в теме, похоже, что я игнорирую мой IP, который я набрал, меняя его с помощью localhost.

Возможно код неправильный.Я слышал "просто поменяй 127.0.0.1 с твоим публичным IP и должен работать", так что я сделал это.

Этот код только для серверов локального хоста?

Я не знаю, поможет ли это в любом случае, но обычно я использую библиотеку p5.js (The Coding Train), переадресация портов установлена ​​как: Сервисный порт -45555, IP-адрес - 192.168.0.103 (проверено в cmd), Внутренний порт - 45555, Протокол - TCP или UDP.

Я добавил исключение в брандмауэр для порта 45555.Иногда, когда я пытаюсь изменить свой код, чтобы проверить другие варианты, но концепция та же самая, он говорит Ошибка: прослушать EADDRNOTAVAIL 178.217.195.9:45555.

Изменение порта неПомогите.Затем я обычно возвращаюсь к этому коду.Через панель управления я сделал свой IP статичным.IP-адрес: 192.168.0.103, шлюз по умолчанию: 192.168.0.1, маска подсети: 255.255.255.0 (если это поможет).

Ранее (я не помню, когда именно, но более 3 месяцев назад) я также установил предпочтительные DNS-серверы как: 8.8.8.8 и 8.8.4.4.Текущая версия Node.js - 8.11.2, npm 6.1.0.Я действительно не хочу использовать Heroku или другие подобные программы.Я что-то слышал о WebSockets, немного суетился вокруг этого, но на самом деле ничего не произошло.У меня нет никаких других идей о полезной информации там.Я надеюсь, что кто-нибудь поможет мне, я отвечу на каждый вопрос о другой информации.

1 Ответ

0 голосов
/ 02 июня 2018

В опциях должно быть host, а не hostname.Таким образом, для вашего кода host отсутствует в параметрах, и по умолчанию localhost используется по умолчанию.

server.listen (options [, callback])

server.listen(options[, callback])
# Added in: v0.11.14

options <Object> Required. Supports the following properties:
    port <number>
    host <string>
    path <string> Will be ignored if port is specified. See Identifying paths for IPC connections.
    backlog <number> Common parameter of server.listen() functions.
    exclusive <boolean> Default: false
    readableAll <boolean> For IPC servers makes the pipe readable for all users. Default: false
    writableAll <boolean> For IPC servers makes the pipe writable for all users. Default: false
callback <Function> Common parameter of server.listen() functions.
Returns: <net.Server>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...