我建立了一個使用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不加載。 –