2012-07-05 27 views
0

我目前正在Python中開發一個WebSocket服務器,但我無法正常計算Sec-WebSocket-Accept。 這裏是我的函數來計算這個(用Python編寫的):Sec-WebSocket-Accept不匹配

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握手

錯誤:仲 - WebSocket-Accept不匹配

你有什麼解決方法嗎?

謝謝。

+0

您使用哪個瀏覽器作爲客戶端? – Alnitak 2012-07-05 21:41:42

+0

Ubuntu下的Google Chrome 18.0.1025.168。 ;-) – 2012-07-05 21:42:23

+0

所以你正在實現規範的RFC 6455版本? – Alnitak 2012-07-05 21:43:17

回答

0

工作示例。 使用「Sec-WebSocket協議」查找代碼

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))