我试图做一个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