解码websocket框架的掩码值是什么?

时间:2014-09-06 17:03:46

标签: java html5 websocket

我知道ENCODED是字节数组,但是什么是MASK,他的价值是什么?

 var DECODED = "";
    for (var i = 0; i < ENCODED.length; i++) {
        DECODED[i] = ENCODED[i] ^ MASK[i % 4];
    }

我在网上找到了这个例子,问题是如何才能知道MASK值是什么?

是否有任何提示或链接?但在谷歌的例子中我只找到这种类型的代码,但我希望明确看到MASK值,请帮助

    pstream = new BufferedWriter(new OutputStreamWriter(csocket.getOutputStream(), StandardCharsets.UTF_8));

    char[] buff = new char[4];

    pstream.read(buf);

//now buf have that masks?

1 个答案:

答案 0 :(得分:0)

正好在该代码段之上,它说:

  

如果设置了MASK位(对于客户端到服务器的消息,它应该是),读取接下来的4个八位位组(32位);这是屏蔽键

您可以在data frame format description中找到MASK位。

因此伪代码可以扩展到

var LEN = decodeLength(buffer);
var MASK = buffer.read(4);
var ENCODED = buffer.read(LEN);
var DECODED = new Buffer(LEN);
for (var i = 0; i < ENCODED.length; i++) {
    DECODED[i] = ENCODED[i] ^ MASK[i % 4];
}