2013-11-26 75 views
1

我已經在PHP中創建了客戶端服務器聊天應用程序。它使用套接字編程進行通信。它在我的使用Fedora的終端上工作正常。但我需要在服務器上主持聊天。但我不擁有任何服務器,所以我使用免費託管網站(與cPanel)。如何在免費的cPanel主機上運行PHP聊天程序?

有沒有辦法在免費的網絡服務器上運行套接字編程聊天服務器而無需訪問其終端?

+0

腳本如何聽 - 它是否在後臺不斷運行?如果是這樣,那麼不太可能允許在免費主機上運行。我不確定他們是否會允許任意套接字偵聽器,因爲偵聽器將佔用每個IP的整個端口。我想你可能需要一個VPS(儘管有限的細節仍然存在,但很難說)。 – halfer

+0

是否可以從免費主機服務器向我的PC發送TCP/UDP消息?他們是否允許在Http請求上發送這樣的數據包? – nuke1010

+0

你會編輯你正在用來做到這一點的代碼,到你的問題? – halfer

回答

0

我剛做了我的本地機器,通過端口轉發調制解調器的服務器,並納入dynamic-dns技術來跟蹤用戶的IP地址,最後在用戶之間創建了點對點連接以啓用聊天。

問題解決了,但沒有使用免費的託管網站!

+1

這會工作,但你的家庭帶寬有限,延遲不會很大。此外,即使您打算全天候使用家用電腦,家用電腦的停機時間通常比機架式服務器還要多。 – halfer

+0

你說得對。但是,它適用於我的測試和私人通信。 – nuke1010

2

大多數免費的主機不允許像socket,curl這樣的php模塊。

當你想通過http獲取一些URL時,它們中的很多禁止使用像file_get_contents和fopen這樣的函數 - 實際上它仍然使用套接字。

另外,如果我們談論聊天服務器,您需要監聽某些特定端口上的連接,並且自定義入站連接更可能被禁止。對於這樣的安全功能

一個原因是不能讓人們利用免費託管的網絡資源,建立不同的刮削器,垃圾郵件,海報等

更好地讓自己的一些廉價的VPS,因爲即使付出虛擬主機計劃通常限於與上述相同的規則。

1

如果您無權訪問任何外部服務器資源,則可以改爲使用輪詢技術。如果沒有通過websocket或使用flash的連接方法,Socket.IO具有回退使用XMLHttpRequest輪詢的功能。

例如,在客戶端上,可以設置的選項:

io.set('polling duration', 5); 

這將導致Socket.IO到每5秒內部執行一個AJAX請求。在服務器端,您需要使用類似elephant.io的東西。不幸的是,沒有推出自己的服務器端解決方案,似乎沒有多少選擇。

由於PHP腳本不會在後端不斷運行,因此您需要設計一些機制來跟蹤用戶狀態。這可能相當複雜,但如果您只是爲了學習目的而這樣做,則可以將其存儲在數據庫中的用戶會話中或客戶端上。無論何時從客戶端發出請求,您都會查詢數據庫以檢索用戶會話,然後使用Socket.IO方法從那裏進行訪問。

+0

是否可以從免費主機服務器向我的PC發送TCP/UDP消息?他們是否允許在Http請求上發送這樣的數據包? – nuke1010

相關問題