php sec-websocket-accept,javascript – Websocket握手Sec-WebSocket-Accept标...

我正在编写一个c websocket服务器,chrome上的dev工具说sec-websocket-accept标头值不正确.我已经测试了几天,一切都很好.尽管在chrome dev工具中显示为101,但客户端关闭了readystate 3而没有调用websocket onopen.

这是我计算密钥的代码

string magickey = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";

string key = msgkey.append(magickey);

unsigned char* sha_str = SHA1(reinterpret_cast(key.c_str()), key.length(), nullptr);

string acceptkey = base64_encode(reinterpret_cast(sha_str), strlen((char*)sha_str));

string handshake_response = "HTTP/1.1 101 Switching Protocols

";

handshake_response.append("Upgrade: websocket

");

handshake_response.append("Connection: Upgrade

");

handshake_response.append("Sec-WebSocket-Accept: "+acceptkey+"

");

handshake_response.append("

");

Chrome响应

HTTP / 1.1 101交换协议

升级:websocket

连接:升级

Sec-WebSocket-Accept:5T5MvxP1iz40vLpi3kQs / ifDaCo =

Chrome请求

获取ws:// localhost:4897 / echo HTTP / 1.1

主持人:localhost:4897

连接:升级

Pragma:没有缓存

缓存控制:无缓存

升级:websocket

起源:http://localhost

Sec-WebSocket-Version:13

User-Agent:Mozilla / 5.0(Windows NT 6.3; WOW64)AppleWebKit / 537.36(KHTML,类似Gecko)Chrome / 47.0.2526.106 Safari / 537.36

Accept-Encoding:gzip,deflate,sdch

Accept-Language:en-US,en; q = 0.8

Sec-WebSocket-Key:LKF8lHGznbKGIgO1UzAOhg ==

Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits

它说“WebSocket握手期间出错:错误’Sec-WebSocket-Accept’标头值”.

Chrome还会显示一个额外的帧,接收大小为79字节的操作码-1.

谢谢堆!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值