我建立了一个使用PHP和node.js的小聊天(使用socket.io库)如何让node.js与vagrant共享一起工作?
本质上,我使用node.js作为聊天服务器和PHP来处理实际的网页。
流浪必须与用户分享您的HTTP服务器的选项:https://www.vagrantup.com/docs/share/http.html
的HTTP服务器在端口80上运行和Node.js的在端口3000
在chat.php网页运行,我有这行代码:
socket = io.connect("http://localhost:3000");
当我执行的无业游民share命令,它提供了一个网址,你可以提供给其他人,他们将能够访问该网站。
所以考虑到URL,我编辑的代码上面提到的包括URL行:
socket = io.connect("http://ugly-elk-1232.vagrantshare.com:3000");
,然后我开始SSH成无业游民,并从那里开始节点。
但它不起作用。在聊天页面,我可以看到超时错误时socket.io试图访问端口3000
这是我在控制台中看到(铬)错误:
(网址是随机的,将更改每次运行漂泊不定的份额,但是我总是更新聊天页)
下面是在我的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?
要清楚,实际的网页服务完好。当我使用流浪者份额时,节点不可访问。
编辑:
我设法解决了一些问题。
我使用流浪股份--http 80在一个窗口和流浪股份 - 在另一个3000流氓。
然后我更改URL,使其连接到已在端口共享3000
因此,代码则看起来像这样的节点服务器: socket = io.connect("http://abc123.vagrantshare.com");
包括:3000(端口)的该网址停止了它的工作。 (不知道为什么,但我不认为这是问题)。
现在的问题是,socket.io现在要求轮询,不再使用websocket。我试图强制它使用websocket,但每次尝试时都会发出400次错误的请求。轮询不一定是坏的,它可以工作,但我希望它使用websockets,因为我需要测试网站在实际运行时的行为方式,并且在这种情况下将使用websockets。
流浪股份的要点是与世界上任何人共享该网站。 192.168。*是您网络上的内部IP。 'socket = io.connect(“http:// site:3000”);'来自chat.php(我现在已经在帖子中编辑了它,使其更加清晰)。 192.168.33.10的作品是,但只有当你从主机访问它。我希望任何人都可以连接到它。这就是为什么我使用他们提供给流氓份额的URL。只是因为某些原因,端口3000不共享。 –
你应该可以从'vagrant share --http 3000'开始' –
只能共享节点服务器。所以,如果我这样做index.php不加载。 –