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:
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)
Leider bekomme ich nicht den gleichen Accept Schlüssel zum zurückschicken raus wie im Beispiel auf der Seite...
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#
Lesezeichen