【发布时间】:2016-11-18 16:47:18
【问题描述】:
我正在尝试在 javascript 客户端和 python 服务器之间建立 Web 套接字连接。我已经设法正确地握手,我可以从 javascript 客户端发送数据,并在服务器上对其进行解码。
当我想从服务器发送数据时出现问题。当我尝试发送清晰的 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")) 的函数只需要一个缓冲区或字符串。
有人知道如何进行这种“编码”吗?
【问题讨论】:
标签: javascript python sockets websocket