为啥客户端不接受我的 WebSocket 响应握手?
Posted
技术标签:
【中文标题】为啥客户端不接受我的 WebSocket 响应握手?【英文标题】:Why does the client not accept my WebSocket response handshake?为什么客户端不接受我的 WebSocket 响应握手? 【发布时间】:2011-10-14 02:07:11 【问题描述】:我使用 Chrome 14。这是我的 python websocket 服务器代码 sn-p:
global guid
key = hashlib.sha1(headers['Sec-WebSocket-Key']+guid).digest()
key.encode('iso-')
headers['Sec-WebSotycket-Accept'] = base64.b64encode(key)
print headers['Sec-WebSocket-Accept']
handshake = '\
HTTP/1.1 101 Switching Protocols\r\n\
Upgrade: %s\r\
Connection: %s\r\
Sec-WebSocket-Accept: %s\r\
Sec-WebSocket-Protocol: base64\r\
' %(headers['Upgrade'],headers['Connection'],headers['Sec-WebSocket-Accept'])
try:
self.conn.send(handshake)
except Exception as e:
print e
为什么 Chrome 客户端不接受此服务器发送握手?
Request URL:ws://127.0.0.1:1234/
Request Headers
Connection:Upgrade
Host:127.0.0.1:1234
Sec-WebSocket-Key:xuV2xuiXxqL4Hwcxjg9dJA==
Sec-WebSocket-Origin:null
Sec-WebSocket-Version:8
Upgrade:websocket
(Key3):00:00:00:00:00:00:00:00
【问题讨论】:
您能否发布 Chrome 提出的请求? (查看 chrome://net-internals/ -> 套接字 -> 查看实时套接字 -> 选择您的 websocket。确保首先选中“数据”选项卡中右侧的复选框。) 或者您可以发送一个请求密钥和您发送的响应密钥吗? 【参考方案1】:可能是您的服务器代码的第 4 行吗?您的键“Sec-WebSotycket-Accept”看起来拼写错误。
【讨论】:
以上是关于为啥客户端不接受我的 WebSocket 响应握手?的主要内容,如果未能解决你的问题,请参考以下文章