2012-10-31 214 views
2

我可以將websocket連接到本地計算機上的服務器。但是當我將文件上傳到遠程Ubuntu服務器時,它不再工作。websocket未連接

服務器端代碼(server.php):

$master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
socket_set_option($master, SOL_SOCKET, SO_REUSEADDR, 1); 
socket_bind($master, "127.0.0.1", 80); 
socket_listen($master, 20); 

客戶端代碼:

<script type="text/javascript"> 
var host = "ws://127.0.0.1:80/server.php"; 
socket = new WebSocket(host); 
</script> 

我打開從Chrome Canary版24版客戶端頁面,服務器端沒有得到任何接受插座。

我將主機改爲「ws://xx.xx.xx.xx:80/server.php」爲服務器的真實IP地址,不起作用。還將服務器端的socket_bind($ master,「127.0.0.1」,80)更改爲真正的IP地址,也沒有運氣。

任何人都可以幫助我嗎?

感謝,

茉莉花

+0

你看到了哪些錯誤信息? – itsbruce

回答

0

我的朋友,當你寫你的服務器。您需要保持它作爲服務運行或者保持運行。 對於PHP服務器,您需要從PHP Cli(php yourfile.php)運行該文件,而不是從瀏覽器(您可以將超時設置爲0,但如果關閉瀏覽器,則服務器停止加工)。 我真的不建議通過PHP的套接字服務器。閱讀有關使用C++(QT,Berkeley)或Java Socket服務器的套接字服務器的更多信息。

當我們在談論HTML5 WebSockets的服務器,它是從編程「正常」套接字服務器不同(有PHP的,可以幫助你編程HTML5的WebSocket服務器很多庫)

https://github.com/Flynsarmy/PHPWebSocket-Chat

在該鏈接中,您可以找到聊天的示例。有一個名爲class.PHPWebSocket.php的文件,將其包含在server.php中,並使用該庫創建HTML5 WebSocket Server。查看示例,瞭解它是如何工作的以及如何使用該類.PHPWebSocket.php(查看示例中的server.php文件)。

完成後運行服務器。

然後做:

// ... 
var host = "ws://IP.OF.THE.SERVER:port"; 
socket = new WebSocket(host); 
// ... 

瞭解更多關於插槽服務器,HTML5的WebSockets,並看看那個class.PHPWebSocket.php效用。 好運我的朋友。

+0

此外,請檢查服務器的IP地址,對服務器執行ping操作,並查看該IP:Port/** SERVER.PHP ** – Spamdark

+0

感謝您的幫助。我使用的服務器代碼只是從phpwebsocket代碼複製而來。而且我確實通過php server.php讓服務器端在那裏運行。問題是$ client = socket_accept($ master);這行沒有得到任何套接字。它在我的本地計算機上工作。 – Jasmine

+0

檢查連接,也許客戶端沒有與服務器連接,執行:socket.onclose和socket.onerror在JavaScript,並看看發生了什麼那裏。 – Spamdark