web-dev-qa-db-ja.com

ローカルネットワーク上の他の人が、マシンで実行中にNodeJSアプリにアクセスするにはどうすればよいですか?

かなり簡単な質問があります。 NodeJSを使用してWebゲームを作成し、複数のブラウザーウィンドウを並べて開いて自分でゲームをプレイできました。ただし、他のローカルマシンが私と一緒にゲームにアクセスしてプレイできるかどうかを知りたいと思います。

私はこのURLを使用してみました:my-ip-address:8000そしてそれは動作しません。

40
theabraham

通常、node.jsサーバーはスクリプトの最後に決定されたポートで実行されます。時々3000。でも何でも構いません。あなたが言うように他の人がアクセスする正しい方法は...

http://your.network.ip.address:port / 例: http://192.168.0.3:30

あなたが正しいポートを持っていることを確認してください-ネットワーク上のIPアドレス-インターネットIPではありません。

そうでない場合、ポートがルーターによってブロックされている可能性があります。 8080または80を使用してこれを回避してください。そうでない場合は、ルーターを再構成してください。

51
Billy Moon

同じ質問があり、問題を解決しました。私の場合、Windowsファイアウォール(ルーターではない)がホスティングマシン上のV8マシンI/Oをブロックしていました。

  1. [Windowsに移動]ボタン
  2. 「ファイアウォール」を検索
  3. 「プログラムがファイアウォールを介して通信できるようにする」を選択します
  4. [設定の変更]をクリックします
  5. 「V8 JavascriptのイベントI/O」OR "Node.js:サーバー側Javascript"

「V8 JavascriptのイベントI/O」は、node.jsが外部と通信するI/Oプロセスであり、ローカルコンピューターの外部にパケットを送信する前に解放する必要があると思います。このプログラムがWindowsファイアウォールを介して通信できるようにした後、任意のポート番号を使用してリッスンできました。

23
Sungsoo Koh

ルーターを使用している場合:

  1. server.listen(yourport, 'localhost');server.listen(yourport, 'your ipv4 address');に置き換えます

    私のマシンでは

    server.listen(3000, '192.168.0.3');
    
  2. ポートがipv4アドレスに転送されていることを確認してください。

  3. Windowsファイアウォールでは、Node.js:Server-side JavaScriptをすべてチェックします。
17
aap

Angular Node WIndows 10でセットアップしたServer(v6.10.3)で同様の問題に直面しました。_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を呼び出すネットワークbtの他のマシンのアプリケーションにアクセスできます

http://192.168.1.104:4201  
//http://{ipaddress}:4201
12
Geo V L

ポートはおそらくローカルファイアウォールまたはルーターによってブロックされています。詳細なしで伝えるのは難しい。

ただし、ファイアウォールルールを台無しにしたり、ノードをポート80でサービスを提供する特権プロセスとして実行したりする必要のない簡単なソリューションがあります。

チェックアウトLocaltunnel素晴らしいRubyスクリプト/サービス。これにより、ローカルポートを数秒でインターネット上で利用できるようになります。実稼働環境では役に立たないが、同僚とゲームを試してみると、それはうまくいくはずです!

5
alienhard

まだ誰も言及していないヒントの1つは、デフォルトのローカルホストではなく、LANアクセス可能なアドレス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を入力して、接続するアドレスにアクセスできます。次に、左側の.255または.0で終わらないIPアドレスのいずれかを試してください

4
Yatit Thakker
const express = require('express');

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

Windowsユーザーがipconfigを使用できる場合は、cmdにifconfigと入力してIPアドレスを取得できます。

3
Rama

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');

がんばろう!

2
RIYAZ
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/');
1
Siddharth

この問題がありました。解決策は、node.jsがサーバーのファイアウォールを通過できるようにすることでした。

0
Anthony Cregan

デフォルトでは、ノードは、それが実行されるホストによって公開されるすべてのIPアドレスで実行されます。特別なことをする必要はありません。サーバーが特定のポートで実行されることは既に知っています。これを証明するには、そのマシンのブラウザでそのIPアドレスを使用します。

http://my-ip-address:port

それでもうまくいかない場合は、IPアドレスが間違っている可能性があります。

0
Sumant Bagade