我目前正在用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
你有解决方案吗?
谢谢。
答案 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) )