标签: arraybuffer

如何通过Websocket发送arraybuffer作为二进制文件?

我正在与Mozilla Europe合作开展一个项目.在这个项目中,我使用了由Worlize(服务器端)和Mozilla(客户端)的Nodeocket,Node.js尝试将文件从客户端上传到服务器.
我目前的目标是将一个arraybuffer文件发送到服务器.创建arraybuffer并发送它很好.
但是我的服务器告诉我这arraybuffer是一条utf8消息而不是二进制消息.

我误解了什么吗?如果没有,我该如何纠正?

客户端:

    reader = new FileReader();
    reader.readAsArrayBuffer(file);
    reader.onload = function(e) {
        connection.send(e.target.result); 
    };
Run Code Online (Sandbox Code Playgroud)

服务器端:

ws.on('message', function(message,flags) {
if (!flags.binary) {
    //some code
}
else {
    console.log('It\'s a binary');
}
Run Code Online (Sandbox Code Playgroud)

我也尝试Blob过,同样的结果.二进制部分是不可见的.

javascript binary file-upload websocket arraybuffer

21
推荐指数
2
解决办法
4万
查看次数

如何告知websocket onmessage参数的类型?

这里https://developer.mozilla.org/en/WebSockets/WebSockets_reference/MessageEvent它指出属性数据类型为DOMString | Blob | ArrayBuffer.我怎么告诉它我想要哪种类型?或者我怎么知道我得到的是哪种类型?

javascript blob websocket arraybuffer

19
推荐指数
1
解决办法
2万
查看次数

ArrayBuffer与Blob和XHR2

XHR2差异表明

传输ArrayBuffer,Blob,File和FormData对象的能力.

  • ArrayBufferBlob有什么区别?
  • 我为什么要关心能够通过XHR2发送它们?(我可以理解File和FormData的价值)

blob xmlhttprequest arraybuffer xmlhttprequest-level2

18
推荐指数
1
解决办法
4688
查看次数

将JS ArrayBuffer或TypedArray传递给没有复制的Emscripten

我在JavaScript中有一个非常大的ArrayBuffer(或TypedArray),我想传递给emscriptened函数.我想传递原始字节而不会产生副本.

如果我的C/C++函数采用std::string如下:

void processBuffer(std::string const& buffer)
Run Code Online (Sandbox Code Playgroud)

我可以获取数据,但是IIUC,转换std::string将产生缓冲区的副本.

有没有办法在没有副本的情况下传递原始缓冲区?
我的访问权限是严格只读的.

我试过了:

void processBuffer(const char* str, size_t size);
Run Code Online (Sandbox Code Playgroud)

设置allow_raw_pointers()EMSCRIPTEN_BINDINGS,但这似乎不起作用.
我错过了什么?

javascript c++ typedarray arraybuffer emscripten

16
推荐指数
1
解决办法
2060
查看次数

哪个ArrayBufferView

我正在通过XHR检索ArrayBuffer,并希望使用FileWriter将其保存到FileSystem API.FileWriter期望Blob和Blob构造函数不会使用ArrayBuffer,它需要一个ArrayBufferView.

有很多ArrayBufferView可供选择,我怎么知道哪个是正确的?

javascript html5 blob filewriter arraybuffer

15
推荐指数
1
解决办法
4063
查看次数

如何在javascript中将字节,多字节和缓冲区附加到ArrayBuffer?

Javascript ArrayBuffer或TypedArrays没有任何类型的appendByte(),appendBytes()或appendBuffer()方法.因此,如果我想一次填充一个ArrayBuffer值,我该怎么做?

var firstVal = 0xAB;              // 1 byte
var secondVal = 0x3D7F            // 2 bytes
var anotherUint8Array = someArr;

var buffer = new ArrayBuffer();   // I don't know the length yet
var bufferArr = new UInt8Array(buffer);

// following methods do not exist. What are the alternatives for each??
bufferArr.appendByte(firstVal);
bufferArr.appendBytes(secondVal);
bufferArr.appendBuffer(anotherUint8Array);
Run Code Online (Sandbox Code Playgroud)

javascript buffer typed-arrays arraybuffer

15
推荐指数
2
解决办法
2万
查看次数

Web Audio API附加/连接不同的AudioBuffers并将它们作为一首歌播放

我一直在玩Web Audio API,我正在尝试加载一首歌的多个部分并将它们附加到一个新的ArrayBuffer,然后使用该ArrayBuffer将所有部分作为一首歌播放.在下面的例子中,我使用相同的歌曲数据(这是一个小循环)而不是歌曲的不同部分.

问题是它仍然只播放一次而不是两次,我不知道为什么.

下载歌曲

function init() {

  /**
   * Appends two ArrayBuffers into a new one.
   * 
   * @param {ArrayBuffer} buffer1 The first buffer.
   * @param {ArrayBuffer} buffer2 The second buffer.
   */
  function appendBuffer(buffer1, buffer2) {
    var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);
    tmp.set( new Uint8Array(buffer1), 0);
    tmp.set( new Uint8Array(buffer2), buffer1.byteLength);
    return tmp;
  }

  /**
   * Loads a song
   * 
   * @param {String} url The url of the song.
   */
  function loadSongWebAudioAPI(url) {
    var request = new XMLHttpRequest();
    var …
Run Code Online (Sandbox Code Playgroud)

javascript concatenation html5-audio arraybuffer web-audio-api

14
推荐指数
2
解决办法
8111
查看次数

如何从ArrayBuffer获取二进制字符串?

在JavaScript中从ArrayBuffer获取二进制字符串的方法是什么?

我不想编码字节,只是将二进制表示形式为String.

提前致谢!

javascript arraybuffer

14
推荐指数
3
解决办法
2万
查看次数

在使用VAO时,VBO中的交错是否会加快性能

当您使用交错的VBO而不是使用多个VBO时,通常会加快速度.这在使用VAO时也有效吗?

因为对于位置有一个VBO,对于法线等有一个VBO更方便.你可以在多个VAO中使用一个VBO.

opengl vertex-buffer arraybuffer

14
推荐指数
1
解决办法
6714
查看次数

如何从JS中的ArrayBuffer编写文件

我正在尝试为Meteor框架编写一个文件上传器.原理是将客户端上的文件从ArrayBuffer拆分为4096位的小包,通过Meteor.method发送到服务器.

下面简化的代码是客户端向服务器发送一个块的部分,它会重复,直到offset到达data.byteLength:

// data is an ArrayBuffer
var total = data.byteLength;
var offset = 0;

var upload = function() {
  var length = 4096; // chunk size

  // adjust the last chunk size
  if (offset + length > total) {
     length = total - offset;
  }

  // I am using Uint8Array to create the chunk
  // because it can be passed to the Meteor.method natively
  var chunk = new Uint8Array(data, offset, length);

  if (offset …
Run Code Online (Sandbox Code Playgroud)

javascript file-upload node.js arraybuffer meteor

14
推荐指数
2
解决办法
2万
查看次数