gpt4 book ai didi

javascript - 在 hybi-10 WebSockets 服务器中发送数据时出现问题

转载 作者:太空狗 更新时间:2023-10-30 03:06:40 24 4
gpt4 key购买 nike

我正在尝试在 python 服务器中实现新的 hybi-10 协议(protocol),现在我成功地握手并从客户端 (JavaScript) 接收数据,但现在我在向客户端发送数据时遇到了问题.

我正在使用 websockify 中的一些代码(encode_hybi 函数)根据此协议(protocol)对帧进行编码。但不幸的是,客户端似乎没有收到数据,因为消息事件永远不会触发。

所以我的代码是这样的:

def encode_hybi(self, buf, opcode = 0x01):

buf = b64encode(buf)

b1 = 0x80 | (opcode & 0x0f)
payload_len = len(buf)
if payload_len <= 125:
header = struct.pack('>BB', b1, payload_len)
elif payload_len > 125 and payload_len < 65536:
header = struct.pack('>BBH', b1, 126, payload_len)
elif payload_len >= 65536:
header = struct.pack('>BBQ', b1, 127, payload_len)

print repr(header + buf)

return header + buf

def send(self, data):
logging.info("Message Sent: %s" % data)

if (self.protocol == 'hixie-76'):
self.client.send("\x00%s\xff" % data)
elif (self.protocol =='hybi-10'):
msg = self.encode_hybi(data)
self.client.send(msg)

我正在通过套接字发送一个简单的'OK'。所以在 encode_hybi 函数之后我得到:'\x81\x04T0s=' 发送给 JavaScript。我没有回应,也没有错误。

我尝试发送其他数据,例如 'OKKK'。在 encode_hybi 函数之后,我得到:'\x81\x08T0tLSw=='。不知道它是否有帮助,但发送此数据后,JavaScript 会出现错误:

Unrecognized frame opcode: 13.

每次发送的数据长度大于 3 个字符时都会出现此错误。

我真的无法理解这个问题。编码有问题吗?

最佳答案

你在握手格式的末尾使用了\n\r\n\r\n,但应该是\r\n\r\n。目前 \n 是 key 的一部分。

虽然我不明白你是如何仍然能够打开连接的,但看起来删除第一个 \n 可以解决问题。

关于javascript - 在 hybi-10 WebSockets 服务器中发送数据时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7575339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com