我正在尝试编写一段代码,它将为Web套接字连接生成Sec-WebSocket-Accept
值。我从网上资源(即MDN)收集的是你:
将客户端在Sec-WebSocket-Key
中发送给您的字符串连接到GUID(258EAFA5-E914-47DA-95CA-C5AB0DC85B11
);
获取此连接结果的SHA-1哈希值;
将结果转换为base 64。
因此,如果我理解正确,相应的PHP代码将是:
base64_encode(sha1($sec-websocket-key."258EAFA5-E914-47DA-95CA-C5AB0DC85B11"));
然而,这是不正确的。它与MDN上显示的示例不匹配(即在MDN上,WebSocket键的值dGhlIHNhbXBsZSBub25jZQ==
应该返回s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
,但是使用我编写的PHP代码,它返回YjM3YTRmMmNjMDYyNGYxNjkwZjY0NjA2Y2YzODU5NDViMmJlYzRlYQ==
)。
我在这里做错了什么?
答案 0 :(得分:1)
<div id="button-container">
<button type="button">Button</button>
<button type="button">Button</button>
<button type="button">Button</button>
<button type="button">Button</button>
<button type="button">Button</button>
</div>
函数接受一个可选的第二个布尔参数,该参数使得它以20个字符的二进制形式而不是40个字符的十六进制形式返回原始SHA-1摘要(参见PHP Manual)。
WebSocket握手需要原始二进制格式。因此,您需要将第二个参数添加到sha1()
函数。
sha1()