2016-06-24 4 views
2

websocket을 통해 한 요청으로 텍스트와 바이너리를 보낼 수있는 방법이 있습니까? 예를 들어 파일 이름 (텍스트)와 파일 내용 (이진)websocket을 통해 텍스트와 바이너리를 보냅니다.

내가 좋아하는 문자열로 보낼 수 있습니다 :

JSON.stringify({filename: "test.dat", filecontent: data}); 

그러나 진 (arraybuffer)와 같은 전용 파일의 내용을 보내는 것보다 훨씬 느립니다.

+0

MsgPack과 같은 이진 데이터를 기본적으로 지원하는 다른 데이터 교환 형식을보고 싶을 수도 있습니다. – mpen

+0

@mpen - webSocket은 바이너리 데이터를 지원합니다. – jfriend00

+0

@ jfriend00 오른쪽 ..'JSON.stringify '대신'msgpack.encode'을 사용하는 것이 좋습니다. – mpen

답변

3

바이너리는 인코딩 된 데이터라는 것을 기억하십시오. 이것은 자바 스크립트 질문 및 인코딩 질문이 적습니다. 방법은 다음과 같습니다.

비트 길이를 test.dat으로 지정하라는 요청 시작 부분에 32 비트 (한 정수를 나타냄)를 둡니다. 그런 다음이 데이터를 두 데이터 소스와 결합하십시오. 귀하의 페이로드는 다음과 같이 표시됩니다

경사 방향을 지정할 수도있다; text_length + TEST.DAT BINARY +를 포함한 FileContent AS BINARY

그대로

그런 다음 배열 버퍼로 데이터를 다시 얻을. 사용

textLengthBits = parseInt(arrBuffer.slice(0,32), 2); 

텍스트의 길이를 얻으려면. 다시 슬라이스,

textBits = arrBuffer.slice(32, 32 + textLengthBits) 

텍스트를 얻으려면. 나머지 비트는 파일입니다.

fileBits = arrBuffer.slice(32 + textLengthBits); 
관련 문제