我如何让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