Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 新协议握手中的数据编码hybi-10_Javascript_Python_Google Chrome_Websocket - Fatal编程技术网

Javascript 新协议握手中的数据编码hybi-10

Javascript 新协议握手中的数据编码hybi-10,javascript,python,google-chrome,websocket,Javascript,Python,Google Chrome,Websocket,我正在使用一个用于python和Javascript的WebSocket,到目前为止,用于Google Chrome的握手协议是。我猜谷歌Chrome最近把协议改成了 所以今天我更新了握手代码,现在WebSocket成功创建并打开了。在JavaScript中的onopen事件中,我发送了一条简单的文本消息: viz.ws = new WebSocket("ws://127.0.0.1:5500"); viz.ws.onopen = function() { viz.ws.send("T

我正在使用一个用于python和Javascript的WebSocket,到目前为止,用于Google Chrome的握手协议是。我猜谷歌Chrome最近把协议改成了

所以今天我更新了握手代码,现在WebSocket成功创建并打开了。在JavaScript中的onopen事件中,我发送了一条简单的文本消息:

viz.ws = new WebSocket("ws://127.0.0.1:5500");

viz.ws.onopen = function() {
    viz.ws.send("TEST\n");
};
我的Python服务器接收这些数据。但是,它是以某种方式编码的,我无法获取我发送的简单文本
“TEST\n”

    def recv_data(self, client, count):

        try:
            data = client.recv(count)

        except:
            return False

        print data
        print data.decode('utf-8','ignore')

        return data.decode('utf-8', 'ignore')
打印返回以下内容:

üàÍu┬¯é0æ║▄
u0
它们总是不同的,但发送的文本总是
TEST\n

此外,服务器接收这些数据,但客户端没有接收到从服务器发送的任何数据


我听说hybi-10使用二进制文件。。。代码中是否缺少数据转换?很抱歉,我对WebSocket非常陌生,这些协议让我头脑混乱……

在HyBi中构建数据的方式(HyBi-00实际上是Hixie-76)发生了重大变化。中介绍了新的帧格式

此外,对于从客户机发送到服务器的数据,数据为。掩码是帧有效载荷的前4个字节,并使用以下简单算法就地解码(和编码):

data[i] = data[i] XOR mask[j MOD 4]
每个帧的掩码键都不同,这就是为什么即使发送相同的数据,每次也会得到不同的有效负载


如果客户端没有接收到您发送的数据,则很可能是您没有正确地构建数据。另外请注意,Chrome14和Firefox6/7还不支持二进制数据,因此操作码必须为1才能表示文本(UTF-8)帧

我回答了一个关于在hybi-10中解码消息的类似问题;也许会有帮助。顺便说一句,Chrome14改为hybi-08(几乎是hybi-10),稳定版本最近刚刚改为14。Chrome 15将支持二进制帧。谢谢,我认为这会有很大帮助!=)我刚刚有一个有很多WebSocket的项目,使用Twisted和txwebsocket。hybi-10和Hixie-76都使用各自的Chrome版本。如果你想要一个替代品,你可以试试。我会看看的。谢谢;)谢谢我会调查的。这真的很无聊,因为我正在尝试制作一个跨浏览器的应用程序。。。首先是mozilla和mozWebSocket,现在是:P。非常感谢您的指示!kanaka,我尝试使用您的实现来解决这个问题(使用decode_-hybi和encode_-hybi函数),现在我成功地解码了从客户端接收到的数据,然后对数据进行编码以发送到客户端(使用encode_-hybi函数),但不知怎的,数据从未收到。。我真的看不出有什么不对,我使用的正是您的代码(对于文本帧,opcode=1)。你能帮我弄清楚吗?@Neuza。很抱歉迟了答复。我建议打开一个新问题,发布代码的相关部分,然后在这里发布一个新问题的链接,以便我得到通知。嘿,没问题。我想出来了。我无法发送帧,但问题在于握手。我不知道如何接收帧并建立连接,但现在通过握手,一切正常。感谢您的回复:)