服务器说:当我从移动设备访问站点时,在握手过程中未定义索引 Sec-WebSocket-Key从同一台电脑本地主机它确定

问题描述

服务器说:当我从移动设备访问站点时,在握手过程中未定义索引 Sec-WebSocket-Key。从同一台电脑(本地主机)它确定

function doHandshake($received_header,$client_socket_resource,$host_name,$port) {
            $headers = array();
            $lines = preg_split("/\r\n/",$received_header);
            foreach($lines as $line)
            {
                $line = chop($line);
                if(preg_match('/\A(\S+): (.*)\z/',$line,$matches))
                {
                    $headers[$matches[1]] = $matches[2];
                }
            }

            $secKey = $headers['Sec-WebSocket-Key'];
            $secAccept = base64_encode(pack('H*',sha1($secKey . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11')));
            $buffer  = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" .
            "Upgrade: websocket\r\n" .
            "Connection: Upgrade\r\n" .
            "WebSocket-Origin: $host_name\r\n" .
            "WebSocket-Location: ws://$host_name:$port/demo/shout.PHP\r\n".
            "Sec-WebSocket-Accept:$secAccept\r\n\r\n";
            socket_write($client_socket_resource,$buffer,strlen($buffer));
        }

解决方法

您需要将 $hostname "localhost" 替换为分配给您计算机的 IP 地址。 您可以访问 https://www.tp-link.com/us/support/faq/838/ 查找主机的 IP 地址。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...