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-不一致を受け入れる

解決策はありますか?

ありがとうございました。

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 に答える