Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Websocket-客户端没有';无法接收数据_Php_Javascript_Websocket - Fatal编程技术网

Php Websocket-客户端没有';无法接收数据

Php Websocket-客户端没有';无法接收数据,php,javascript,websocket,Php,Javascript,Websocket,我正在写一些基于websockets(RFC6455)的应用程序。不幸的是,客户端(在Chrome18上测试)似乎没有接收数据,但服务器说它正在发送 Chrome什么也没说 以下是主要的服务器方法: private function decode($payload) { $length = ord($payload[1]) & 127; if ($length == 126) { $masks = substr($payload, 4, 4);

我正在写一些基于websockets(RFC6455)的应用程序。不幸的是,客户端(在Chrome18上测试)似乎没有接收数据,但服务器说它正在发送

Chrome什么也没说

以下是主要的服务器方法:

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));
}
private函数解码($payload){
$length=ord($payload[1])&127;
如果($length==126){
$masks=substr($payload,4,4);
$data=substr($payload,8);
}elseif($length==127){
$masks=substr($payload,10,4);
$data=substr($payload,14);
}否则{
$masks=substr($payload,2,4);
$data=substr($payload,6);
}
$text='';
对于($i=0;$i”。$msg.N;
socket_write($client,$msg,strlen($msg));
}

如果发送的测试消息超过125字节,但