Подтвердить что ты не робот

Как другие, находящиеся в локальной сети, могут получить доступ к моему приложению NodeJS во время работы на моей машине?

У меня довольно простой вопрос. Я сделал веб-игру с NodeJS, и я могу успешно воспроизвести ее самостоятельно, открыв несколько боковых окон браузера; однако, я хотел бы узнать, можно ли другим локальным машинам иметь доступ и играть в игру со мной тоже.

Я наивно пытался использовать этот url: my-ip-address:8000, и он не будет работать.

4b9b3361

Ответ 1

ваш сервер node.js обычно работает на порту, определенном в конце script. Иногда 3000. но может быть что угодно. Правильный способ доступа других - это, как вы говорите...

http://your.network.ip.address:port/ например http://192.168.0.3:3000

проверьте, что у вас есть правильный порт - и IP-адрес в сети - не интернет-ip.

В противном случае, возможно, порты блокируются вашим маршрутизатором. Попробуйте использовать 8080 или 80, чтобы обойти это - в противном случае повторно настройте маршрутизатор.

Ответ 2

У меня был тот же вопрос и я решил проблему. В моем случае брандмауэр Windows (а не маршрутизатор) блокировал ввод/вывод V8 на хостинге.

  • Перейти к окну
  • Поиск "Брандмауэр"
  • Выберите "Разрешить программам общаться через брандмауэр"
  • Нажмите "Изменить настройку"
  • Отметьте все "Evented I/O для V8 Javascript" ИЛИ "Node.js: Javascript на стороне сервера"

Я предполагаю, что "Evented I/O for V8 Javascript" - это процесс ввода-вывода, который node.js связывается с внешним миром, и нам нужно освободить его, прежде чем он сможет отправлять пакеты за пределы локального компьютера. После включения этой программы для связи через брандмауэр Windows я мог бы использовать любые номера портов для прослушивания.

Ответ 3

Столкнулся с аналогичной проблемой с моим Angular Node Server (v6.10.3), который настроен в Windows 10. http://localhost:4201 нормально работал в localhost. Но http://{ipaddress}:4201 не работает на других машинах в локальной сети.

Для этого я обновил ng serve вот так

//Older ng serve in windows command Prompt

ng serve --host localhost --port 4201

//Updated ng serve
//ng serve --host {ipaddress} --port {portno}
ng serve --host 192.168.1.104 --port 4201

После выполнения этой модификации можно получить доступ к моему приложению на других машинах в сети, вызвав этот URL

http://192.168.1.104:4201  
//http://{ipaddress}:4201

Ответ 4

Если вы используете маршрутизатор, то:

  1. Замените server.listen(yourport, 'localhost'); с server.listen(yourport, 'your ipv4 address');

    в моей машине это

    server.listen(3000, '192.168.0.3');
    
  2. Убедитесь, что ваш порт перенаправлен на ваш IPv4-адрес.

  3. На брандмауэре Windows отметьте все на Node.js: серверный JavaScript.

Ответ 5

Возможно, порт заблокирован вашим локальным брандмауэром или маршрутизатором. Трудно сказать без подробностей.

Но есть простое решение, для которого вам не нужно связываться с правилами брандмауэра, запускать узел как привилегированный процесс для обслуживания через порт 80 и т.д.

Проверьте Localtunnel. Это отличный скрипт/сервис Ruby, который позволяет сделать любой локальный порт доступным в интернете за считанные секунды. Это, конечно, не полезно для производственной установки, но, чтобы попробовать игру с коллегами, она должна работать просто отлично!

Ответ 6

И не забудьте изменить в Index.html следующий код:

 <script src="http://192.168.1.4:8000/socket.io/socket.io.js"></script>
 <script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>

 var socket = io.connect('http://192.168.1.4:8000');

Удачи!

Ответ 7

var http = require('http');
http.createServer(function (req, res) {
}).listen(80, '127.0.0.1');
console.log('Server running at http://127.0.0.1:80/');

Ответ 8

По умолчанию node будет запускаться на каждом IP-адресе, открытом хостом, на котором он запущен. Вам не нужно ничего особенного делать. Вы уже знали, что сервер работает на определенном порту. Вы можете это доказать, используя этот IP-адрес в браузере на этом компьютере:

http://my-ip-address:port

Если это не сработало, у вас может быть неправильный IP-адрес.

Ответ 9

У меня была эта проблема. Решение состояло в том, чтобы позволить node.js через межсетевой экран сервера.

Ответ 10

Одна очевидная проблема заключается в том, что порт, на который вы звонили, может быть заблокирован вашим маршрутизатором. Сначала я потерял с 3000,2779 и успешно пинговал 8080.

Надеюсь, что это поможет

Ответ 11

const express = require('express');

var app = express();    
app.listen(Port Number, "Your IP Address");
// e.g.
app.listen(3000, "192.183.190.3");

Вы можете получить свой IP-адрес, набрав ipconfig в cmd, если ваш пользователь Windows еще может использовать ifconfig.

Ответ 12

Один совет, который еще никто не упомянул, - не забудьте разместить приложение по адресу в локальной сети 0.0.0.0 вместо локального хоста по умолчанию. Брандмауэры на Mac и Linux менее строги в отношении этого адреса по сравнению с адресом localhost по умолчанию (172.0.0.1).

Например,

gatsby develop --host 0.0.0.0

yarn start --host 0.0.0.0

npm start --host 0.0.0.0

Затем вы можете получить доступ к адресу для подключения, введя в терминале ifconfig или ipconfig. Затем попробуйте один из IP-адресов слева, который не заканчивается на .255 или .0

Ответ 13

Убедитесь, что сервер запущен, либо с помощью "npm start", либо "nodemon" в окне командной строки.