2013-07-07 94 views
17

這很複雜,並不一定是一個問題。我會很感激任何可能的幫助。Websocket併發症

我讀過,可能沒有服務器訪問的websockets,但我似乎無法找到任何示例顯示它是如何。我得出這樣的結論(我認爲我需要這個)基於以下兩點:

  1. 我一直掙扎在過去的幾個小時試圖找出如何連得WebSockets的工作我的機器上裝有WAMP服務器,我有root權限。安裝了作曲家,但無法弄清楚如何安裝composer.phar文件來安裝棘輪。已嘗試其他PHP websocket實現(寧願它在PHP中),但仍然無法讓他們工作。

  2. 我用於測試的東西是免費的主機,並且不允許SSH訪問。因此,即使我可以想出獲得root訪問權限的websockets,但對於主機來說,這是一個有爭議的問題。

我還發現,免費VPS主機通過谷歌搜索(當然,有限的一切),但具有完全的root訪問權限,但我寧願保持的東西,可以讓更多的帶寬(我的免費主機是目前無限制) 。我讀過你可以(也應該)將websocket服務器託管在與HTTP服務器不同的子域上,並且它甚至可以完全在不同的域上運行。

它也可能最終成本更低,主辦我自己的網站,當然沒有真正的線索,但在那種情況下,我需要弄清楚如何甚至讓websockets在我的機器上工作。

因此,如果任何人都可以理解我在問什麼,這裏有幾個問題,是否有可能使用沒有root訪問權限的websockets,如果有,怎麼辦?當我無法弄清楚composer.phar文件時(我的composer.json中帶有棘輪代碼,但不知道它是否在正確的目錄中),我該如何正確安裝棘輪websockets?這個問題是,如果第一個問題不是真正有可能。那麼是否有可能在VPS上安裝websocket服務器,並將HTTP服務器放在完全不同的域上?如果有,是否有任何關於它的文檔?

我的意思是,當然,有一個使用AJAX的選項,並且強制瀏覽器在每個時間段都會重新加載一個JS文件,這會使用jQuery ajax更新一系列div,無論是否有任何更改,但這可能會變得複雜,我甚至不知道這是否可能(我不明白爲什麼它不會),但是我再次更喜歡websocket,因爲我聽說他們的資源遠不如以前那麼多某種這一段會是。

+1

據我瞭解,websocket圖片有兩面。服務器(php)和客戶端(瀏覽器javascript)。如果你可以在你的服務器上運行php,你應該可以讓你的服務器使用[ratchet](http://socketo.me)並提供一個websocket服務,客戶端可以使用類似socket.io的東西 – Loopo

+2

使用[heroku ](http://heroku.com)用於socket.io它有非常棒的命令行來訪問你所需要的東西,我已經在那裏託管了我的Socket項目,它的功能就像一個魅力,讓我知道,如果heroku幫助。試一試!它是免費的,也許你可以依靠它的CLI。 –

+0

像https://pusher.com/可以幫助你嗎? – jornare

回答

-1

好的...你有幾個問題,所以我會盡力一一回答。

1.使用什麼

你可以使用Socket.IO。它是一個用於開發基於JavaScript的實時Web應用程序的庫。它由2部分組成 - 客戶端(在訪問者瀏覽器上運行)和服務器端。基本用法不需要​​任何關於Node.js的背景知識。 Here is an example教程在官方Socket.IO網站上的一個簡單的聊天應用程序。

2.主機

大多數託管服務提供商的具有控制面板(的cPanel)與capebility安裝/激活不同的Apache插件等。首先,你應該檢查Node.js是否已經不可用,如果沒有,你可以聯繫支持,並詢問他們是否包含這個選項。

如果沒有與當前的託管提供商,你可以隨時快速切換主機,因爲有很多很好的交易在那裏任何運氣。谷歌肯定會在這裏幫助你。 Here is a list包含一些(也許)最好的選擇。請記住,雖然可能會支付一些託管交易,但有很多低成本選項可供選擇。

3.帶寬

正如你所擔心的「資源飢餓」的代碼也許你可以嘗試託管您的某些內容上Amazon CloudFront。它是一種廣泛使用的內容交付網絡,可確保快速連接和快速資源加載,因爲文件是從最近的客戶端服務器加載的。最好的部分是,你只需支付你實際使用的費用,所以如果你沒有那麼多的流量,運行起來真的很便宜,而且仍然可靠!

希望這有助於;)

6

Apache下一個純PHP文件下香草LAMP運行(即mod_php的)不能處理WebSocket連接。它不能執行協議升級,更不用說實際上執行實時通信,至少通過Apache。從理論上講,對PHP文件運行一個TCP服務器來服務WebSocket請求可能會有一個非常長時間的Web請求,但這是不切實際的,我懷疑一個共享主機實際上是否會允許PHP這樣做。

可能會有一些共享的主機,使它們能夠用的WebSocket PHP主機,但他們不能提供,沒有任何SSH/shell訪問,或者一些其他的方式給Web服務器之外運行PHP。如果他們只是給你一個上傳PHP文件的目錄,並且用Apache提供它們,那麼你運氣不好。

至於您與Composer的問題,我不知道是否可以在共享主機上運行composer.phar,而無需某種外殼訪問。某些主機(例如Heroku)對Composer有特定的支持。

關於一個完全不同的域名運行的WebSocket服務器,你確實可以做到這一點。只需指出您的JavaScript連接到該域,並確保WebSocket服務器提供必要的跨源資源共享標頭。