2013-01-04 44 views
1

我試圖在我的網站上設置PHP websockets。這工作我的本地WAMP的服務器上偉大的,但在我的網站,我不斷收到一個警告:PHP websockets - 已在使用的地址

無法綁定地址[98]:地址已經在」

我嘗試過各種庫一起使用,但他們都返回這個錯誤

我的猜測是,我使用的端口是不是免費的。問題是,我無法訪問終端,因爲這是一個共享服務器(根據phpinfo()websockets是啓用,順便說一句)所以我不能找空閒的端口。也試圖使用端口0 - 但沒有運氣。

提前致謝!

編輯: 舉例來說,這是一個使用https://github.com/Flynsarmy/PHPWebSocket-Chat

// start the server 
$Server = new PHPWebSocket(); 
$Server->bind('message', 'wsOnMessage'); 
$Server->bind('open', 'wsOnOpen'); 
$Server->bind('close', 'wsOnClose'); 
// for other computers to connect, you will probably need to change this to your LAN IP or external IP, 
// alternatively use: gethostbyaddr(gethostbyname($_SERVER['SERVER_NAME'])) 
$Server->wsStartServer($_SERVER['SERVER_ADDR'], 9300); 

好一些代碼,BlueHost的網站寫道:「我們阻止用戶訪問某些端口,以幫助避免在防火牆中有安全漏洞...購買一專用IP將允許我們授予您訪問運行特定服務所需的端口的權限。「技術支持人員否則告訴我。我猜這個案子已經關閉了。謝謝大家的時間!

+0

通常你必須是特權用戶使用低於10000的端口,因爲它是共享的主機,它不可能你有特權,所以我想這是有可能得到該錯誤消息。嘗試10000以上的端口,看看它是否工作。 – Cfreak

+0

我得到了同樣的錯誤:'( – talhof9

+0

有多達65,535個端口,較低數字中的任何內容都可能正在使用中,您嘗試過多少次?嘗試大量40000以上的隨機端口以查看是否仍然出現錯誤。 – MrCode

回答

0

很可能您的託管服務提供商在某種程度上禁用了PHP套接字。這很有意義,因爲PHP用於處理網頁而不是創建守護進程,並且您可能使用常規的Web託管計劃(而不是專用服務器)。

我會檢查與您的託管服務提供商 - 支持論壇或只是打電話給他們。

+0

即使phpinfo()表示套接字已啓用? – talhof9

+0

它可能是防火牆封鎖。即使你設法建立一個套接字和一個守護進程,最終他們也會發現並停止你的腳本。 另外,請檢查了這一點:http://stackoverflow.com/questions/13778056/php-websocket-on-webserver – Plamen

+0

那麼,他們說fsockopen也適用於共享服務器。不知道是什麼意思 – talhof9

0

talhof9我在嘗試配置我的共享主機服務時遇到過類似的痛苦,我沒有找到直接解決方案來獲得共享的* AMP服務器來支持WebSockets,但我發現了一種解決方法,至少可以讓您測試您正在整合的解決方案的商業可行性(如果這確實是您正在尋找的),而無需付出所有設置,配置和管理您自己的VPS的麻煩。

檢出http://www.pusher.com爲一個簡單的websocket部署庫,它使用他們的節點服務器。免費的沙盒版本可以讓你玩轉它,並且一旦你想測試商業可行性,你可以升級到付費計劃。

希望這會有所幫助!

(注意我爲推不工作)

+0

好吧,謝謝:) – talhof9