首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >websocket握手

websocket握手
EN

Stack Overflow用户
提问于 2012-02-09 22:36:44
回答 1查看 2.2K关注 0票数 1

我正在写一个使用c++的websocket服务器,我正在等待使用chrome 17作为客户端的握手。

当服务器向客户端发送握手响应时,chrome总是在控制台中显示以下错误:

WebSocket握手期间出错: Sec-WebSocket-Accept不匹配

chrome中的事件如下:

代码语言:javascript
复制
t=1328796971951 [st= 5]    WEB_SOCKET_SEND_REQUEST_HEADERS  
--> GET / HTTP/1.1   
Upgrade: websocket
Connection: Upgrade
Host: 127.0.0.1:38950
Origin: null     
Sec-WebSocket-Key: zMb+UCeRb+2OmMp9fpbxHw==
Sec-WebSocket-Version: 13

t=1328796971951 [st= 5]    SOCKET_STREAM_SENT     
t=1328796971971 [st=25]    SOCKET_STREAM_RECEIVED  
t=1328796971971 [st=25]    WEB_SOCKET_READ_RESPONSE_HEADERS  
--> HTTP/1.1 101 Switching Protocols
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept: 4emBYsdkl0SxeUMGLNc0dFsI1/E=


t=1328796971972 [st=26] -REQUEST_ALIVE

请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2017-01-07 06:06:38

未正确计算Sec-WebSocket-Accept值。

如何计算该值(伪代码):

代码语言:javascript
复制
// Getting the Sec-WebSocket-Key from the Request header
var sec_Websocket_Key = requestHeader["Sec-WebSocket-Key"];
// Adding the magic string to sec_Websocket_key
// sha1 hash this new value
var sec_Websocket_Key_Hash = (sec_Websocket-Key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11").sha1();
// Get the Base64 String of the hash
var sec_Websocket_Accept = sec_Websocket_Key_Hash.toBase64String();
// sec_Websocket_Accept now is the correct value to set in the Header

获取更多信息here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9212793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档