2012-04-10 75 views
1

這看起來像一個簡單的問題,但它讓我難以置信:假設我無法運行守護進程,我將如何設置websocket服務器?在不運行守護進程的情況下設置Websocket服務器

(詳細信息:阿帕奇2.2.21,PHP 5.3.9,所以最好用PHP)

+0

仍然需要守護進程..就像ZeroMQ – 2012-04-10 09:18:16

回答

2

通過不想要守護我假設你所要求的,在阿帕奇/ PHP的,而不是作爲一個獨立的程序/你必須運行服務器運行的東西。

請注意,PHP還沒有一個很好的選項,可以同時支持舊的Hixie WebSocket協議和較新的HyBi/IETF協議(大多數其他語言都有支持這兩種協議的服務器)。

如果你願意考慮非PHP選項,這些項目可以集成到Apache和支持該協議的兩個版本:

0

也許http://code.google.com/p/phpwebsocket/可以幫到你。

從HOWTO:

// Server side 
log("Handshaking..."); 
list($resource,$host,$origin) = getheaders($buffer); 
$upgrade = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" . 
     "Upgrade: WebSocket\r\n" . 
     "Connection: Upgrade\r\n" . 
     "WebSocket-Origin: " . $origin . "\r\n" . 
     "WebSocket-Location: ws://" . $host . $resource . "\r\n" . 
     "\r\n"; 
$handshake = true; 
socket_write($socket,$upgrade.chr(0),strlen($upgrade.chr(0))); 


// Client side 
var host = "ws://localhost:12345/websocket/server.php"; 
try{ 
    socket = new WebSocket(host); 
    log('WebSocket - status '+socket.readyState); 
    socket.onopen = function(msg){ log("Welcome - status "+this.readyState); }; 
    socket.onmessage = function(msg){ log("Received: "+msg.data); }; 
    socket.onclose = function(msg){ log("Disconnected - status "+this.readyState);  }; 
} 
catch(ex){ log(ex); } 
相關問題