0

我目前正在用 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 不匹配

你有什么解决办法吗?

谢谢你。

4

1 回答 1

1

工作示例。使用“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) )
于 2012-08-12T20:24:29.097 回答