首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在hybi-10 WebSockets服务器中发送数据时出现问题

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

Stack Overflow用户
提问于 2011-09-27 20:37:20
回答 1查看 2.2K关注 0票数 4

我试图在python服务器上实现新的hybi-10协议,目前我成功地与客户端(JavaScript)进行了握手和接收数据,但现在我在向客户端发送数据时遇到了问题。

我正在使用来自websockify (encode_hybi函数)的一些代码来根据这个协议对帧进行编码。但不幸的是,客户端似乎没有接收到数据,因为on消息事件从不触发。

所以我的代码是:

代码语言:javascript
运行
复制
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会出现一个错误:

未识别的帧操作码: 13。

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

我真的不明白这个问题。编码有问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-28 10:50:58

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

虽然我不明白您如何仍然能够打开连接,但似乎删除第一个\n解决了问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7575339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档