好吧,我不会说太多...... 我一直在使用node.js作为WebSocket服务器,我有这个问题吗?: enter image description here
(预期输出为:'在这里工作')
以下是执行此操作的行: enter image description here
更多图片:enter image description here (预期输出是:'工作')
我的意思是,当值存储为变量时,它会发生变化吗? 这是nodeJS或v8引擎中的某种错误吗? (可能,这是99%我错了;)
这是函数的来源:
websocket.prototype.decodeWebSocketMessage = function decodeWebSocketMessage(native_data){
var message = native_data;//data.slice(start, end);
var FIN = (message[0] & 0x80);
var RSV1 = (message[0] & 0x40);
var RSV2 = (message[0] & 0x20);
var RSV3 = (message[0] & 0x10);
var Opcode = message[0] & 0x0F;
var mask = (message[1] & 0x80);
var length = (message[1] & 0x7F);
var nextByte = 2;
if (length === 126) {// length = next 2 bytes
nextByte += 2;
} else if (length === 127){// length = next 8 bytes
nextByte += 8;
}
var maskingKey = null;
if (mask){
maskingKey = message.slice(nextByte, nextByte + 4);
nextByte += 4;
}
var payload = message.slice(nextByte, nextByte + length);
if (maskingKey){
for (var i = 0; i < payload.length; i++){
payload[i] = payload[i] ^ maskingKey[i % 4];
}
}
return payload.toString().split("\n")[0];
}
答案 0 :(得分:0)
您的函数decodeWebStream
会改变输入变量d。这可能与代码中其他地方的错误相结合,对数据进行双重编码可能会导致decodeWebStream
的第二次调用,为您提供正确的值(但不是第一个或第三个)。