Как другие, находящиеся в локальной сети, могут получить доступ к моему приложению NodeJS во время работы на моей машине?
У меня довольно простой вопрос. Я сделал веб-игру с NodeJS, и я могу успешно воспроизвести ее самостоятельно, открыв несколько боковых окон браузера; однако, я хотел бы узнать, можно ли другим локальным машинам иметь доступ и играть в игру со мной тоже.
Я наивно пытался использовать этот url: my-ip-address:8000
, и он не будет работать.
Ответы
Ответ 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
Если вы используете маршрутизатор, то:
-
Замените server.listen(yourport, 'localhost');
с server.listen(yourport, 'your ipv4 address');
в моей машине это
server.listen(3000, '192.168.0.3');
-
Убедитесь, что ваш порт перенаправлен на ваш IPv4-адрес.
- На брандмауэре 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" в окне командной строки.