Как другие пользователи в локальной сети могут получить доступ к моему приложению NodeJS, пока оно работает на моей машине? - PullRequest
38 голосов
/ 30 марта 2011

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

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

Ответы [ 12 ]

49 голосов
/ 30 марта 2011

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

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

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

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

23 голосов
/ 28 ноября 2014

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

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

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

17 голосов
/ 31 марта 2018

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

  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.
12 голосов
/ 13 июня 2017

Столкнулся с аналогичной проблемой с моим 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

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

http://192.168.1.104:4201  
//http://{ipaddress}:4201
4 голосов
/ 03 февраля 2019

Один совет, который еще никто не упомянул, - не забывайте размещать приложение по адресу в локальной сети 0.0.0.0 вместо локального хоста по умолчанию.Брандмауэры в Mac и Linux менее строги в отношении этого адреса по сравнению с адресом локального хоста по умолчанию (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

4 голосов
/ 30 марта 2011

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

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

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

2 голосов
/ 05 ноября 2018
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.

2 голосов
/ 10 декабря 2012

И не забудьте изменить в 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');

Удачи!

1 голос
/ 25 августа 2015
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/');
0 голосов
/ 27 августа 2016

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

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