これは単純な質問のように見えるかもしれませんが、頭が混乱しています: デーモンを実行できないと仮定すると、Websocket サーバーをどのようにセットアップすればよいでしょうか?
(詳細: Apache 2.2.21、PHP 5.3.9、できれば PHP を使用)
デーモンが欲しくないということは、実行しなければならないスタンドアロンのプログラム/サーバーとしてではなく、Apache/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/があなたを助けることができます。
ハウツーから:
// 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); }
http://code.google.com/p/phpwebsocket/
サーバーはデーモンとして実行する必要があります...それ以外の場合、サーバーのポイントは何ですか?