javascript - 我无法连接到我的 websocket,因为它的握手 Sec-WebSocket-Accept header 值不正确

标签 javascript php websocket

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

我将其握手 Sec-WebSocket-Accept header 值设置为以下值:

$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

但我发现了这个Error during WebSocket handshake: Incorrect 'Sec-WebSocket-Accept' header value with PHP , 通过定义 buffer limit 解决,我的问题是什么?

我不明白如何定义缓冲区限制,但如果是我的问题,请解释一下。

不是我制作了这个 phpwebsocket,我只是在使用它。

好吧,这是 phpwebsocket 文件中的变量 $upgrade 行,它设置了一些 header 。

                "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-OriginWebsocket-Location header ,并且您在最后两个 header 之间做了双换行。

您的回复应该更像这样:

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"

关于javascript - 我无法连接到我的 websocket,因为它的握手 Sec-WebSocket-Accept header 值不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33462256/

相关文章:

python - 带有 Gui 的 Websocket

javascript - 单击同一行上另一个单元格中的图像后,如何替换特定单元格中的单词?

php - 使用javascript SDK登录后如何获取facebook getuser()

SSL CA 证书的 PHP 问题(路径?访问权限?)

c++ - C++ HTTP客户端recv()和写入文件问题

java - flash websocket + jetty

javascript - 在我提到文件名之前,requirejs 如何知道加载所需的 js 文件?

javascript - Sencha : Cannot call method 'getHeader' of undefined

javascript - Express.JS 处理服务器端错误

php - Paypal 重新授权交易。 REST API