Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Javascript 我能';无法连接到我的websocket,因为它的握手秒websocket接受标头值不正确_Javascript_Php_Websocket - Fatal编程技术网

Javascript 我能';无法连接到我的websocket,因为它的握手秒websocket接受标头值不正确

Javascript 我能';无法连接到我的websocket,因为它的握手秒websocket接受标头值不正确,javascript,php,websocket,Javascript,Php,Websocket,我正在做我的第一个测试,尝试使用phpwebsocket 我将其握手Sec WebSocket Accept标题值设置为以下值: $accept=base64_encode(SHA1($key."258EAFA5-E914-47DA-95CA-C5AB0DC85B11", true)); /* $key has $buffer value */ 所以我运行websocket php文件(创建连接),一切正常 因此,我运行测试html,其中包含一个脚本,该脚本试图连接到我正在使用的phpwebs

我正在做我的第一个测试,尝试使用phpwebsocket

我将其握手
Sec WebSocket Accept
标题值设置为以下值:

$accept=base64_encode(SHA1($key."258EAFA5-E914-47DA-95CA-C5AB0DC85B11", true));
/* $key has $buffer value */
所以我运行websocket php文件(创建连接),一切正常

因此,我运行测试html,其中包含一个脚本,该脚本试图连接到我正在使用的phpwebsocket,在浏览器控制台中,我收到以下错误:

fc.js:43 WebSocket connection to 'ws://localhost:8000/PetStack/inc/server.php' failed: Error during WebSocket handshake: Incorrect 'Sec-WebSocket-Accept' header value
但我发现,这是通过定义缓冲区限制来解决的,我的问题是什么

我不知道如何定义缓冲区限制,但如果这是我的问题,请解释我

这个phpwebsocket不是我做的,我只是在用它

这是phpwebsocket文件中变量
$upgrade
的行,它设置了一些头

                "HTTP/1.1 101 Web Socket Protocol Handshake\r\n".
                "Upgrade: WebSocket\r\n".
                "Connection: Upgrade\r\n".
                "WebSocket-Origin:{$origin}\r\n".
                "Sec-WebSocket-Accept:".$accept."\r\n\r\n".
                "WebSocket-Location: ws://{$host}{$resource}\r\n\r\n".
                chr(0);

你的握手看起来很奇怪

没有
Websocket原点
Websocket位置
标题,您在最后两个标题之间做了一条双分线

您的回答应该更像这样:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
"HTTP/1.1 101 Switching Protocols\r\n".
"Upgrade: WebSocket\r\n".
"Connection: Upgrade\r\n".
"Sec-WebSocket-Accept: {$accept}\r\n\r\n"
因此,请尝试以下方法:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
"HTTP/1.1 101 Switching Protocols\r\n".
"Upgrade: WebSocket\r\n".
"Connection: Upgrade\r\n".
"Sec-WebSocket-Accept: {$accept}\r\n\r\n"

现在,我使用substr获取Sec Websocket密钥,并将其保存在变量
$Key
中<代码>$key=substr(substr((字符串)$buffer,strpos((字符串)$buffer,'Sec-WebSocket-key:')),strpos((字符串)$buffer,')+1,strpos((字符串)$buffer,'=')+1)-但我仍然得到相同的错误:(感谢您的大力帮助,但我仍然得到了错误…:(行看起来是
$upgrade=“HTTP/1.1 101 Web套接字协议握手\r\n”。“upgrade:WebSocket\r\n”。“Connection:upgrade\r\n”。“Sec WebSocket Accept:{$Accept}\r\n\r\n”
。错误似乎不在此行中,但可能会影响。此错误意味着我的Sec WebSocket Accept密钥无效。您能举一个您收到的请求和返回的响应的示例吗?我已经尝试删除它们,但如下所示:(我将添加一些注释)我指的是实际的HTTP请求和响应