RFC 6455 仕様をサポートする Web ソケット サーバーが見つからなかったため、PHP で Web ソケット サーバーをプログラミングしています。その際、phpwebsocketのコードをベースに RFC 6455 対応にしました。少なくとも、メッセージの受信部分については行いました。メッセージをサーバーに送り返そうとするたびに、さまざまなメッセージが返されます。これは、ビットマスキングのスキルが...ひどいためだと確信しています。そのため、かなりの試行錯誤の後、私はまだこの問題を抱えており、その理由はわかりません.
Time OpCode Mask Length Data
1>2012-06-25T18:05:58.014Z 1 true 4 Ping
2>2012-06-25T18:06:02.121Z 1 true 5 hello
3 2012-06-25T18:06:02.121Z A server must not mask any frames that it sends to the server.
また
3 2012-06-25T18:06:02.121Z Unexpected continuation frame.
コマンドラインインターフェイスを使用して、コンピューターでPHP 5.4.4を使用しています。php ws.php
Web ソケット サーバーを起動するために必要な作業はこれだけです。次にwsClient.html
、をクライアントとして使用します。Windows 8 Preview で最新バージョンの Google Chrome (21.0.1180.4 dev-m) を使用すると、次のメッセージが表示されます。
私のgithub リポジトリから php サーバーとクライアントをダウンロードして、そこから長時間プレイすることができます。問題はWebSockets::send関数にあります。
private function send($client, $payload)
{
$frame = pack('C2a*', 0b10000001, 0b01111111 & strlen($payload), $payload);
socket_write($client, $frame, strlen($frame));
}
私は何を間違っていますか?