2017-01-18 11 views
2

私はPHPとnode.js(socket.ioライブラリを使用)を使用して小さなチャットを作成しました。node.jsを迷惑な共有で動作させるにはどうすればよいですか?

チャットのサーバーとPHPでは実際には実際のWebページを処理するためにnode.jsを使用します。 、HTTPサーバーがポート80で実行され、ポート3000 chat.phpページ

上で実行されているのNode.js https://www.vagrantup.com/docs/share/http.html

ベイグラントは、ユーザーとHTTPサーバーを共有するためのオプションを持っています

socket = io.connect("http://localhost:3000"); 

私は浮浪者shareコマンドを実行すると、それはあなたが他の人に提供することができ、彼らは、サイトにアクセスすることができますURLを提供しています。私は、このコード行を持っています。

socket = io.connect("http://ugly-elk-1232.vagrantshare.com:3000"); 

、その後、私は浮浪者にSSHを起動して、そこからノードを起動します。

だからURLは、私はそのURLが含まれるように、上記のコードの行を編集することを与えられました。

ただし、動作しません。 socket.ioがポート3000

にアクセスしようとすると、チャットのページで、私はタイムアウトエラーを見ることができますここで私は(クロームで)コンソールで取得エラーです:

(URLはランダムと意志でありますここに私のvagrantfileに何だ、私は放浪のシェアを実行するが、私はいつものチャットページにそれを更新するたびに)

を変更:

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure("2") do |config| 

    config.vm.box = "scotch/box" 
    config.vm.network "private_network", ip: "192.168.33.10" 
    config.vm.hostname = "scotchbox" 
    config.vm.synced_folder ".", "/var/www", :mount_options => ["dmode=777", "fmode=666"] 
    config.vm.network "forwarded_port", guest: 3306, host: 3306 

    # Optional NFS. Make sure to remove other synced_folder line too 
    #config.vm.synced_folder ".", "/var/www", :nfs => { :mount_options => ["dmode=777","fmode=666"] } 

end 

この作業を行うとポートを許可する方法はあります3000はポート80だけでなく共有されますか?

実際のウェブページは完全に正確に表示されます。私が迷い込み共有を使用している場合、ノードにアクセスできないということだけです。

編集:

私は多少問題を解決することができました。

私は、1つのウィンドウで - 流行の共有80を使用し、別のものでは迷惑な共有では--http 3000を使用します。それは3000

だからコードは、このように見えるポートで共有されたノードのサーバーに接続するよう

は、それから私は、URLを変更: socket = io.connect("http://abc123.vagrantshare.com");

含む:3000(ポート)でURLは動作しなくなります。 (理由はわかりませんが、私はこれが問題だとは思わない)。

現在、問題はsocket.ioがポーリングに頼っており、Webソケットを使用していないことです。私はWebSocketを使用するように強制しようとしましたが、試行するたびに400回の悪い要求を出します。ポーリングは必ずしも悪いとは限りませんが、実際に稼動しているときにサイトがどのように動作するかをテストする必要があるため、Webソケットを使用する必要がありました。あなたはローカルでのみ聴いていると、あなた場合はアプリがあなたのVM(あなたのホストマシンからアクセスしようとするとそれも動作しません)

からのみ動作しますので

socket = io.connect("http://localhost:3000"); 

答えて

0

あなたはポート3000から直接アプリを共有したいと思います。

vagrant share --http 3000 
+0

迷惑メールの共有のポイントは、世界中の誰とでもサイトを共有することです。 *はネットワーク上の内部IPです。 'socket = io.connect(" http:// site:3000 ");'という行はchat.phpに由来しています(私は今これを投稿で編集してより明確にしています)。 192.168.33.10は、ホストマシンからアクセスする場合にのみ有効です。私は誰もがそれに接続できるようにしたい。だからこそ、私は代わりに迷惑メールシェアを提供するURLを使用します。何らかの理由でポート3000が共有されていないことだけです。 –

+0

あなたは '' vagrant share --http 3000'で始めることができます。 –

+0

ノードサーバだけを共有します。だから、index.phpがロードされない。 –

関連する問題