웹 브라우저에서 웹 소켓을 열면 기본값은 blob 으로 열리는데
Value A string:
"blob" Use Blob objects for binary data. This is the default value.
"arraybuffer" Use ArrayBuffer objects for binary data. |
binaryType을 지정하면 blob이 아닌 arraybuffer로 열 수 있다.
// Create WebSocket connection. const socket = new WebSocket("ws://localhost:8080");
// Change binary type from "blob" to "arraybuffer" socket.binaryType = "arraybuffer"; |
[링크 : https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/binaryType]
웹 소켓에서 blob이나 arraybuffer로 받는데
blob은 slice를 통해 자를수 있긴 한데 이래저래 행렬 처리가 아니다 보니 번거롭고
개인적인 취향으로는 blob을 받아서 arraybuffer로 변환하기 보다는 arraybuffer로 받아서 적당히 잘라쓰는 쪽 일 듯
blob은 contentType을 멀 지정해야 하나 조금 귀찮은 듯.. (타입이다 보니 int32, float64 이런게 아닐 것 같으니)
Syntax slice() slice(start) slice(start, end) slice(start, end, contentType) |
[링크 : https://developer.mozilla.org/en-US/docs/Web/API/Blob/slice]
Convert an ArrayBuffer or typed array to a Blob # var array = new Uint8Array([0x04, 0x06, 0x07, 0x08]); var blob = new Blob([array]); |
[링크 : https://riptutorial.com/javascript/example/1390/converting-between-blobs-and-arraybuffers]
[링크 : https://velog.io/@chltjdrhd777/ArrayBuffer-와-Blob]
[링크 : https://heropy.blog/2019/02/28/blob/]
strToAB = str => new Uint8Array(str.split('') .map(c => c.charCodeAt(0))).buffer;
ABToStr = ab => new Uint8Array(ab).reduce((p, c) => p + String.fromCharCode(c), '');
console.log(ABToStr(strToAB('hello world!'))); |
[링크 : https://stackoverflow.com/questions/39725716/]
[링크 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Int32Array]
[링크 : http://mohwa.github.io/blog/javascript/2015/08/31/binary-inJS/]