我試圖做一個JavaScript客戶端和python服務器之間的網絡套接字連接。我已經成功地握手了,我可以從JavaScript客戶端發送數據,並在服務器上解碼。Python編碼網絡套接字框架
當我想從服務器發送數據時出現問題。當我嘗試發送明確的ASCII文本時,我在客戶端Websocket Error: [object Event]
上收到此錯誤。自然,所以我想在發送數據之前對數據進行「編碼」。我嘗試了很多東西,包括基本的base64。但沒有任何工作。我偶然發現了這個thread。它是一個如何準備發送數據的例子。
下面是代碼我想出了迄今:
def encodeFrame(bytesRaw):
bytesFormatted = []
bytesFormatted.append(129)
indexStartRawData = 0
if len(bytesRaw) <= 125:
bytesFormatted.append(len(bytesRaw))
indexStartRawData = 2
elif len(bytesRaw) >= 126 and len(bytesRaw) <= 65535:
bytesFormatted.append(126)
bytesFormatted.append((len(bytesRaw) >> 8) + 255)
bytesFormatted.append((len(bytesRaw)) + 255)
indexStartRawData = 4
else:
bytesFormatted.append(127)
bytesFormatted.append((len(bytesRaw) >> 56) + 255)
bytesFormatted.append((len(bytesRaw) >> 48) + 255)
bytesFormatted.append((len(bytesRaw) >> 40) + 255)
bytesFormatted.append((len(bytesRaw) >> 32) + 255)
bytesFormatted.append((len(bytesRaw) >> 24) + 255)
bytesFormatted.append((len(bytesRaw) >> 16) + 255)
bytesFormatted.append((len(bytesRaw) >> 8) + 255)
bytesFormatted.append((len(bytesRaw)) + 255)
indexStartRawData = 10
bytesFormatted.put(bytesRaw, indexStartRawData)
return bytesFormatted
我想大部分作品的權利,但我不知道我應該用最後的命令做:bytesFormatted.put(bytesRaw, indexStartRawData)
。我試着追加到數組,並使用緩衝區格式。但它不會工作。發送數據的功能client.send(encodeFrame("test"))
在我的情況下,只需要一個緩衝區或字符串。
有沒有人有任何想法如何做到這一點「編碼」?
謝謝,完美的作品! – jakobS