2012-07-05 41 views
0

我目前正在Python中开发一个WebSocket服务器,但我无法正常计算Sec-WebSocket-Accept。 这里是我的函数来计算这个(用Python编写的):Sec-WebSocket-Accept不匹配

def get_accept_websocket_key(self, key): 
    magic_string = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11' 
    key += magic_string 
    return base64.b64encode(hashlib.sha1(key).hexdigest()) 

我所有的结果似乎是不错,但我总是在JavaScript控制台:

期间的WebSocket握手

错误:仲 - WebSocket-Accept不匹配

你有什么解决方法吗?

谢谢。

+0

您使用哪个浏览器作为客户端? – Alnitak 2012-07-05 21:41:42

+0

Ubuntu下的Google Chrome 18.0.1025.168。 ;-) – 2012-07-05 21:42:23

+0

所以你正在实现规范的RFC 6455版本? – Alnitak 2012-07-05 21:43:17

回答

0

工作示例。 使用“Sec-WebSocket协议”查找代码

from base64 import b64encode, b64decode 
from hashlib import sha1 

def sendHeaers(self, connect) 
    data = ["HTTP/1.1 101 Switching Protocols", 
      "\r\nUpgrade: websocket", 
      "\r\nConnection: Upgrade"] 

    if 'Sec-WebSocket-Protocol' in self.httpHeader: 
     data.append("\r\nSec-WebSocket-Protocol: webserver") 

    if 'Sec-WebSocket-Key' in self.httpHeader: 
     sha1f = sha1() 
     sha1f.update(self.httpHeader['Sec-WebSocket-Key'] + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11") 
     ticket = b64encode(sha1f.digest()) 
     data.append("\r\nSec-WebSocket-Accept: " + ticket) 

    data.append("\r\n\r\n") 
    connect.send("".join(data))