2016-07-03 18 views
-1

私は自分自身をnode.jsとsocket.ioを使ってチャットアプリケーションにしましたが、それは動作しますが、私はそれをlocalhost:80からもう実行したくありません。オンラインになる。どうすれば私のWebアプリケーションを転送できますか?私はHTTPポートをportforwardしようとしましたが、うまくいきませんでした。ここに私のサーバ側のコードは次のとおりです。socket.ioアプリを移植する方法

var express = require("express"), 
    app = express(), 
    server = require("http").createServer(app), 
    io = require("socket.io").listen(server); 
server.listen(80); 

app.get("/", function(req, res){ 
    res.sendfile(__dirname + "/index.html"); 
}); 

はそうそう、私がやりたいすべてが代わりに使用するのである「localhostは:80」私は接続するために、私のIPアドレスを使用できるようにしたいです。

答えて

0

ホームルーターからの通常のポート転送はうまくいくはずです。 socket.io接続はwebSocket接続の下にあり、webSocket接続はHTTPリクエストとして起動し、同じ元のソケットはwebSocketプロトコルに「アップグレード」されます。したがって、クライアントはプロセス全体を開始して元の接続を確立するようにサーバーにHTTPリクエストを行います。

したがって、HTTPで動作するすべてのポート転送設定は、socket.io接続で機能するはずです。

Socket.io接続はTCP接続とは異なり、長期間接続されているため、長期間の接続を許可しないインフラストラクチャがないようにする必要があります(プロキシは、長時間のWebSocket接続)、これはポートフォワーディングに適用する必要があります。


参考までに、socket.io接続には.listen()は必要ありません。あなたは上のポート転送を行っているときに...場合

io = require("socket.io")(server); 

これはあなたのポートforwrardingとに明確ではありません

を:これに

io = require("socket.io").listen(server); 

:あなたはこれを変更することができますホームルータでは、特定のポート上の着信要求を、ホームネットワーク上の特定のコンピュータとポートに転送します。次に、インターネットから接続する場合は、ルータのパブリックIPアドレスとポート転送用に設定したポートに接続します。ルーターは、ポート転送ルールを使用して、目的のポートの着信要求をローカルネットワーク上の特定のサーバーに再ルーティングします。間違いやアプリを適切に保護しないと、インターネット上の人々があなたのホームネットワークの内部を攻撃する可能性のある攻撃点が開く可能性があるため、これは非常に注意する必要があります。

通常、これは長期的な計画ではなく、アプリケーションを運営するホスティング会社に支払う方が良いです。次に、固定IPアドレスを取得し、そのIPアドレスに対応するドメイン名を設定することもできます。

+0

@AlexYates - これはあなたの質問に答えましたか? – jfriend00

関連する問題