這看起來像一個簡單的問題,但它讓我難以置信:假設我無法運行守護進程,我將如何設置websocket服務器?在不運行守護進程的情況下設置Websocket服務器
(詳細信息:阿帕奇2.2.21,PHP 5.3.9,所以最好用PHP)
這看起來像一個簡單的問題,但它讓我難以置信:假設我無法運行守護進程,我將如何設置websocket服務器?在不運行守護進程的情況下設置Websocket服務器
(詳細信息:阿帕奇2.2.21,PHP 5.3.9,所以最好用PHP)
通過不想要守護我假設你所要求的,在阿帕奇/ PHP的,而不是作爲一個獨立的程序/你必須運行服務器運行的東西。
請注意,PHP還沒有一個很好的選項,可以同時支持舊的Hixie WebSocket協議和較新的HyBi/IETF協議(大多數其他語言都有支持這兩種協議的服務器)。
http://code.google.com/p/phpwebsocket/只支持舊的Hixie協議。這對iOS設備(iPhone和iPad)很有用。
http://code.google.com/p/php-websocket-server/只支持最新版本的大多數其他瀏覽器支持的較新的HyBi/IETF協議。
如果你願意考慮非PHP選項,這些項目可以集成到Apache和支持該協議的兩個版本:
http://code.google.com/p/phpwebsocket/
服務器需要作爲守護進程運行...什麼是另有一臺服務器的地步?
也許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); }
仍然需要守護進程..就像ZeroMQ – 2012-04-10 09:18:16