かなり簡単な質問があります。 NodeJSを使用してWebゲームを作成し、複数のブラウザーウィンドウを並べて開いて自分でゲームをプレイできました。ただし、他のローカルマシンが私と一緒にゲームにアクセスしてプレイできるかどうかを知りたいと思います。
私はこのURLを使用してみました:my-ip-address:8000
そしてそれは動作しません。
通常、node.jsサーバーはスクリプトの最後に決定されたポートで実行されます。時々3000。でも何でも構いません。あなたが言うように他の人がアクセスする正しい方法は...
http://your.network.ip.address:port / 例: http://192.168.0.3:30
あなたが正しいポートを持っていることを確認してください-ネットワーク上のIPアドレス-インターネットIPではありません。
そうでない場合、ポートがルーターによってブロックされている可能性があります。 8080または80を使用してこれを回避してください。そうでない場合は、ルーターを再構成してください。
同じ質問があり、問題を解決しました。私の場合、Windowsファイアウォール(ルーターではない)がホスティングマシン上のV8マシンI/Oをブロックしていました。
「V8 JavascriptのイベントI/O」は、node.jsが外部と通信するI/Oプロセスであり、ローカルコンピューターの外部にパケットを送信する前に解放する必要があると思います。このプログラムがWindowsファイアウォールを介して通信できるようにした後、任意のポート番号を使用してリッスンできました。
ルーターを使用している場合:
server.listen(yourport, 'localhost');
をserver.listen(yourport, 'your ipv4 address');
に置き換えます
私のマシンでは
server.listen(3000, '192.168.0.3');
ポートがipv4アドレスに転送されていることを確認してください。
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
ポートはおそらくローカルファイアウォールまたはルーターによってブロックされています。詳細なしで伝えるのは難しい。
ただし、ファイアウォールルールを台無しにしたり、ノードをポート80でサービスを提供する特権プロセスとして実行したりする必要のない簡単なソリューションがあります。
チェックアウトLocaltunnel素晴らしいRubyスクリプト/サービス。これにより、ローカルポートを数秒でインターネット上で利用できるようになります。実稼働環境では役に立たないが、同僚とゲームを試してみると、それはうまくいくはずです!
まだ誰も言及していないヒントの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アドレスのいずれかを試してください
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アドレスを取得できます。
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');
がんばろう!
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/');
この問題がありました。解決策は、node.jsがサーバーのファイアウォールを通過できるようにすることでした。
デフォルトでは、ノードは、それが実行されるホストによって公開されるすべてのIPアドレスで実行されます。特別なことをする必要はありません。サーバーが特定のポートで実行されることは既に知っています。これを証明するには、そのマシンのブラウザでそのIPアドレスを使用します。
http://my-ip-address:port
それでもうまくいかない場合は、IPアドレスが間違っている可能性があります。