2011-12-02 32 views
2

我在C++中编写了一个websocket服务器,它可以与websocket协议00(握手标头中的key1,key2)协同工作。Websocket版本8 Sec-WebSocket-Accept不匹配

现在,随着新的更新,我正在尝试为新的方式握手工作做同样的事情。这是我的服务器对握手请求的响应:

“HTTP/1.1 101交换协议\ r \ n升级:websocket \ r \ n连接:升级\ r \ nSec-WebSocket-Accept:”+ serverKey +“\ r \ ñ\ r \ n“个;

其中serverkey正确计算。作为一个例子:

握手请求:
GET /测试HTTP/1.1
升级:网页套接字
连接:升级
主机:192.168.123.102:8585
仲丁基的WebSocket-产地: http://192.168.123.5
二段的WebSocket密钥:YB0mPvJ5t8ggCeGUWY39uQ ==
二段的WebSocket-版本:8

握手响应头:
HTTP/1.1 101交换协议
升级:网页套接字
连接:升级
仲丁基的WebSocket - 接受:xt9iyCNryQTseELUkHPWjzxA2ts =

我还检查我ALGO以http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-08为例,它产生了完全相同的响应。

但是我仍然得到以下错误:
“错误的WebSocket握手期间:二段的WebSocket,接受不匹配”

我使用铬作为15我的浏览器。

你有什么想法出了什么问题?

(也Chrome检查网络,它并没有显示这是当它不接受握手(甚至与旧版本)的情况下,响应)

回答

1

我居然发现了什么是首要解决的问题。

,我使用base64编码的关键是

YB0mPvJ5t8ggCeGUWY39uQ== 
258EAFA5-E914-47DA-95CA-C5AB0DC85B11 

,而不是

YB0mPvJ5t8ggCeGUWY39uQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11 

一个额外的\ n为整个问题。

但是,现在我收到连接消息(ws客户端已成功连接到ws服务器)我无法发送或接收任何内容。问题是服务器端

你知道自旧的websocket协议以来服务器端发生了什么变化吗?我只改变了我的握手回应,似乎不够。