谷歌本地客户端,从NACL发送二进制数据到前端(Google Native Client, send

2019-07-31 09:38发布

我如何发送二进制数据,例如mp3/mp4数据返回到前端?

我知道有这样做的两种方法:利用受盐所提供的沙箱的文件系统,并获得在前端的URL; 通过使所述数据PostMessage()使用VarArrayBuffer 。 这将是巨大的,如果有人可以给我如何通过传递二进制数据一个简单的例子PostMessage() 有一个例子傍对于摩NACl文件系统API但我如何检索文件位置的URL,这样前端JS可以通过邮件得到它的那种迷茫。

以下是我迄今所做的,使用通过传递数据的第二种方法PostMessage()VarArrayBuffer

  • 我成功地从在线mp4文件检索的数据并将其存储在一个字符向量vector<char> outputBuffer

  • 转储数据到一个新的字符缓冲区,并创建VarArrayBuffer来保存数据,并把它传递给JS侧

     char* binaryBuffer = new char[outputBuffer.size()]; int increment = 0; for (vector<char>::iterator it = outputBuffer.begin(); it != outputBuffer.end(); it++) { binaryBuffer[increment] = *it; } pp::VarArrayBuffer outBuffer(binaryBuffer); instance_->PostMessage(outBuffer);//instance_ is a NACL module instance 

所以,JS方应该如何抓住数组缓冲区? 它是通过message.data还是其他什么东西?

文章来源: Google Native Client, sending binary data from NACL to the frontend