2017-12-24 1 views
-6

글쎄, 나는별로 이야기하지 않을 것이다 ... 나는 WebSocket 서버로서 node.js를 사용하고 있는데, 이것에 대해 문제가 발생 했습니까? : enter image description hereNode.js 버그? 함수의 반환 값이 변수로 저장할 때 변경됨

(예상 출력은 다음과 같습니다 '여기서 일하는') : enter image description here

더 많은 이미지 : 여기

는 이렇게 선이다 enter image description here (예상 출력은 다음과 같습니다 '작동')

나는 값이 변수로 저장되면 변경된다는 것을 의미합니까 ?? nodeJS 또는 v8 엔진에 어떤 종류의 버그가 있습니까 ?? decodeWebStream 입력 변수 D를 변이합니다

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]; 

}

+2

귀하의 질문에 관련 코드를 모두 포함하십시오. – Hum4n01d

+3

또한 이미지 링크를 사용하지 않고 코드를 게시하십시오. –

+0

.toString()과 똑같은 내용이 변경됩니다. –

답변

0

함수 :

여기 함수의 소스입니다; 는 (아마, 내가 틀렸다 99 %이다). 이것은 아마도 코드의 다른 부분에있는 오류와 결합하여 데이터를 두 번 인코딩하면 decodeWebStream이라는 두 번째 호출로 이어 지므로 올바른 값 (첫 번째 또는 세 번째가 아닌)을 알 수 있습니다.

+0

정확히 무슨 일이 일어 났습니까! 도와 주셔서 감사합니다. –

관련 문제