Websocket - Client empfängt keine Daten

Ich schreibe eine App basierend auf Websockets (RFC 6455). Leider sieht es so aus, als ob der Client (Test unter Chrome 18) keine Daten empfängt, aber der Server sagt, dass er sendet ...

Chrome sagt nichts

Hier sind die wichtigsten Servermethoden:

private function decode($payload) {
    $length = ord($payload[1]) & 127;

    if ($length == 126) {
        $masks = substr($payload, 4, 4);
        $data = substr($payload, 8);
    } elseif ($length == 127) {
        $masks = substr($payload, 10, 4);
        $data = substr($payload, 14);
    } else {
        $masks = substr($payload, 2, 4);
        $data = substr($payload, 6);
    }

    $text = '';
    for ($i = 0; $i < strlen($data); ++$i) {
        $text .= $data[$i] ^ $masks[$i % 4];
    }

    $text = base64_decode($text);
    return $text;
}

private function encode($text) {
    $text = base64_encode($text);
    // 0x1 text frame (FIN + opcode)
    $b1 = 0x80 | (0x1 & 0x0f);
    $length = strlen($text);

    if ($length <= 125)
        $header = pack('CC', $b1, $length);
    elseif ($length > 125 && $length < 65536)
        $header = pack('CCS', $b1, 126, $length);
    else 
        $header = pack('CCN', $b1, 127, $length);

    return $header . $text;
} 

protected function process($user, $msg) {
    echo '<< '.$msg.N;
    if (empty($msg)) {
        $this->send($user->socket, $msg);
        return;
    }
}

protected function send($client, $msg) {
    $msg = $this->encode($msg);
    echo '>> '.$msg.N;
    socket_write($client, $msg, strlen($msg));
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage