我如何让node.js和vagrant共享?

我使用PHP和node.js(使用socket.io库)build立了一个小聊天,

本质上,我使用node.js作为聊天服务器和PHP来处理实际的网页。

Vagrant可以select与用户共享您的HTTP服务器: https : //www.vagrantup.com/docs/share/http.html

HTTP服务器在端口80上运行,node.js在端口3000上运行。

在chat.php页面上,我有这样的代码行:

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

当我执行vagrant share命令时,它提供了一个可以提供给其他人的URL,他们将能够访问该站点。

所以给定这个URL,我编辑上面提到的代码行来包含这个URL:

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

然后我开始SSH进入无家可归并从那里开始节点。

但是它不起作用。 在聊天页面上,当socket.io尝试访问端口3000时,可以看到超时错误。

这是我在控制台中得到的错误(在铬):

 GET http://ugly-elk-1232.vagrantshare.com:3000/socket.io/?EIO=3&transport=polling&t=Lcp9sZh net::ERR_CONNECTION_TIMED_OUT 

(这个URL是随机的,每次运行stream浪分享的时候都会改变,但是我总是在聊天页面上更新它)

以下是我的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?

要清楚,实际的网页服务完好。 只是当我使用stream浪股份时节点不可访问。

编辑:

我设法解决了一些问题。

我使用stream氓份额 – 在一个窗口中的HTTP 80和stream浪者份额 – 在另一个HTTP 3000。

然后,我更改URL以便连接到在端口3000上共享的节点服务器。

所以代码如下所示: socket = io.connect("http://abc123.vagrantshare.com");

包括:3000(端口)在URL中停止工作。 (不知道为什么,但我不认为这是问题)。

现在的问题是,socket.io现在采取轮询,不再使用websocket。 我试图强制它使用websockets,但它每次尝试时都会给出400个错误的请求。 轮询不一定是坏的,它的工作原理,但我希望它使用websockets,因为我需要testing网站将如何performance,实际上,websockets将在这种情况下使用。

因为

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

您只在本地进行侦听,而且该应用程序只能从您的虚拟机上运行(如果您尝试从主机访问它,它甚至不能工作)

如果你想直接从端口3000共享应用程序,你应该能够运行游民分享

 vagrant share --http 3000