Sec-WebSocket-Accept不匹配

时间:2012-07-05 21:39:08

标签: javascript python websocket

我目前正在用Python开发一个WebSocket服务器但是我无法显然计算Sec-WebSocket-Accept,这通常不是很困难。 这是我计算它的函数(用Python编写):

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握手期间出错:Sec-WebSocket-Accept mismatch

你有解决方案吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

工作实例。 使用“Sec-WebSocket-Protocol”

查找代码
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) )