hab ne ganz interessante Webseite dazu gefunden: http://enterprisewebbook.com/ch8_websockets.html
Ich muss also, bevor ich die Kommunikation beginnen kann erst mal einen Schlüssel bearbeiten und dann zurückschicken...
Mein Programm um das zu testen sieht momentan so aus:
Leider bekomme ich nicht den gleichen Accept Schlüssel zum zurückschicken raus wie im Beispiel auf der Seite...Code:import hashlib import base64 MAGIC = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" HSHAKE_RESP = "HTTP/1.1 101 Switching Protocols\r\n" + \ "Upgrade: websocket\r\n" + \ "Connection: Upgrade\r\n" + \ "Sec-WebSocket-Accept: %s\r\n" + \ "\r\n" data = "GET HTTP/1.1\r\n" + \ "Upgrade: websocket\r\n" + \ "Connection: Upgrade\r\n" + \ "Host: echo.websocket.org\r\n" + \ "Origin: http://www.websocket.org\r\n" + \ "Sec-WebSocket-Key: i9ri`AfOgSsKwUlmLjIkGA==\r\n" + \ "Sec-WebSocket-Version: 13\r\n" + \ "Sec-WebSocket-Protocol: chat\r\n" print("HSHAKE_RESP: ", HSHAKE_RESP) print("data: ", data) headers = {} lines = data.splitlines() for l in lines: parts = l.split(": ", 1) if len(parts) == 2: headers[parts[0]] = parts[1] headers['code'] = lines[len(lines) - 1] key = headers['Sec-WebSocket-Key'] print("key: ", key) combi = key + MAGIC; combi_b = combi.encode('UTF-8') print("combi: ", combi) #print("combi_b: ", combi_b) resp_data = HSHAKE_RESP % ((base64.b64encode(hashlib.sha1(combi_b).digest()),)) print("resp_data: ", resp_data)
Die schicken den Key: i9ri`AfOgSsKwUlmLjIkGA== an das Serverscript und bekommen dann, wenn sie es mit dem "special globally unique identifier (GUID) string 258EAFA5-E914-47DA-95CA-C5AB0DC85B11" bearbeitet haben das raus: Qz9Mp4/YtIjPccdpbvFEm17G8bs=
Ich bekomme aber das raus: ti16O6oiN0nzWbVtqq9omKeAd/Y=
warum ? Kann mir einer helfen ? Ich habe ja schließlich nichts groß verändert, sondern den Code fast von da ganz unten übernommen : http://stackoverflow.com/questions/1...ing-to-python#







Zitieren


Lesezeichen