J'ai une question assez simple. J'ai créé un jeu Web avec NodeJS et je peux y jouer seul avec plusieurs fenêtres de navigateur ouvertes côte à côte. Cependant, j'aimerais savoir s'il est possible que d'autres machines locales puissent également accéder au jeu et y jouer avec moi.
J'ai naïvement essayé d'utiliser cette URL: my-ip-address:8000
et cela ne fonctionnera pas.
votre serveur node.js s'exécute généralement sur un port déterminé à la fin du script. Parfois 3000. mais peut être n'importe quoi. La bonne façon d’accéder aux autres est, comme vous le dites….
http: //votre.network.ip.address: port/ par exemple . http://192.168.0.3:3000
vérifiez que vous avez le bon port - et l'adresse IP sur le réseau - pas Internet IP.
Sinon, les ports sont peut-être bloqués par votre routeur. Essayez d’utiliser 8080 ou 80 pour éviter ce problème - sinon, reconfigurez votre routeur.
J'ai eu la même question et résolu le problème. Dans mon cas, le pare-feu Windows (pas le routeur) bloquait les E/S de la machine V8 sur la machine hôte.
Mon hypothèse est que "Evented I/O for V8 Javascript" est le processus d'E/S que node.js communique avec le monde extérieur. Nous devons le libérer avant de pouvoir envoyer des paquets en dehors de l'ordinateur local. Après avoir permis à ce programme de communiquer via le pare-feu Windows, je pouvais utiliser tous les numéros de port pour écouter.
Si vous utilisez un routeur, alors:
Remplacez server.listen(yourport, 'localhost');
par server.listen(yourport, 'your ipv4 address');
dans ma machine c'est
server.listen(3000, '192.168.0.3');
Assurez-vous que votre port est transféré à votre adresse ipv4.
Problème similaire rencontré avec mon Angular Node Server (v6.10.3) qui s’est installé dans Windows 10 .http://localhost:4201
fonctionnait correctement dans localhost. Mais http://{ipaddress}:4201
ne fonctionne pas sur d’autres machines du réseau local.
Pour cela j'ai mis à jour le ng serve
comme ceci
//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
Après avoir effectué cette modification en mesure d’accéder à mon application sur d’autres machines du réseau appelant cette URL
http://192.168.1.104:4201
//http://{ipaddress}:4201
Le port est probablement bloqué par votre pare-feu ou votre routeur local. Difficile à dire sans détails.
Mais il existe une solution simple pour laquelle vous n'avez pas à vous soucier des règles de pare-feu, à exécuter le noeud en tant que processus privilégié à servir sur le port 80, etc.
Départ Localtunnel. C'est un excellent script/service Ruby, qui vous permet de rendre n'importe quel port local disponible sur Internet en quelques secondes. Ce n'est certainement pas utile pour une installation de production, mais pour essayer un jeu avec des collègues, ça devrait marcher!
Et n'oubliez pas de changer dans Index.html le code suivant:
<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');
Bonne chance!
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/');
Un conseil que personne n’a encore mentionné est d’héberger l’application à l’adresse 0.0.0.0 accessible par le réseau local au lieu de l’hôte local par défaut. Les pare-feu sur Mac et Linux sont moins stricts en ce qui concerne cette adresse par rapport à l'adresse par défaut de l'hôte localhost (172.0.0.1).
Par exemple,
gatsby develop --Host 0.0.0.0
yarn start --Host 0.0.0.0
npm start --Host 0.0.0.0
Vous pouvez ensuite accéder à l'adresse à laquelle vous connecter en entrant ifconfig
ou ipconfig
dans le terminal. Puis essayez l’une des adresses IP de gauche qui ne se termine pas par .255
ou .0
.
J'ai eu ce problème. La solution consistait à autoriser node.js via le pare-feu du serveur.
const express = require('express');
var app = express();
app.listen(Port Number, "Your IP Address");
// e.g.
app.listen(3000, "192.183.190.3");
Vous pouvez obtenir votre adresse IP en tapant ipconfig
dans cmd si votre utilisateur Windows peut également utiliser ifconfig
.
Par défaut, le nœud sera exécuté sur chaque adresse IP exposée par l'hôte sur lequel il s'exécute. Vous n'avez rien de spécial à faire. Vous saviez déjà que le serveur fonctionnait sur un port particulier. Vous pouvez le prouver en utilisant cette adresse IP sur un navigateur sur cette machine:
http://my-ip-address:port
Si cela ne fonctionnait pas, votre adresse IP pourrait être erronée.