如何将二进制数据从Google Chrome扩展程序发送到本机应用程序

如何解决如何将二进制数据从Google Chrome扩展程序发送到本机应用程序

我正在将数据从Google Chrome扩展程序发送到使用C#开发的本机应用程序,但是,这仅在我发送短文本消息时有效,而在数据为二进制(JSON编码)时则无效。

例如,要通过扩展名发送命令,我正在呼叫:

port.postMessage({ command: 'Rates',info: request.setRates });

其中port是本地消息传递应用程序连接,而request.setRates{setRates: "framesPerSecond=15&audioBitrate=22050"}

在C#应用程序中,可以通过STDIN完美接收。

但是,如果我调用此指令:

port.postMessage(request.binaryStream);

request.binaryStream{"data":[26,69,223,163,66,134,129,1,247,129…122,235,208,2,56,64,163],"contentType":"x-media"}的地方。

在本机应用程序中很难接收到。数据长度约为77 KB,在这种情况下,我收到类似0,215,214,171,175,125,107,95,94,250,190,181,........的信息,当然,它是无效的JSON字符串。似乎正在产生某种类型的缓冲区溢出。

这怎么办?

编辑:

目前最后一次尝试是对数组进行base64编码:

mediaRecorder.ondataavailable = function (e) {
    e.data.arrayBuffer().then(buffer => {
        chrome.runtime.sendMessage(appId,{ binaryStream: Uint8ToBase64(new Uint8Array(buffer)) },function (response) {
            console.log(response);
        });
        stopStream();
    });

这样,它被发送到本机应用程序(一个紧接着另一个):

{command: "Binary",data: "GkXfo6NChoEBQveBAULygQRC84EIQoKIbWF0cm9za2FCh4EEQo…ddddddddddddddddddddddddddddddddddddddddddddeow=="}
{command: "Binary",data: "QgaBAACA+4O2l3/8ZtVmH2JXfcZSfs+ulepr+aF2U5d+kW0SDu…fgBgDv16uSH4AY6Q9YA4dcvrl9cvrl9cvrl9coHrr0AI4QA=="}

这是在本机应用程序中接收的:

^  {"command":"Binary","data":"QgaBAACA+4O2l3/8ZtVmH2JXfcZSfs+ulepr+aF2U5d+kW0SDuRqP9n9baILWx2vK/6vraUaEqNo9Tf7htznm8o72wjRTzgjZFyfSf+k4BZDp9luH6Un1JWAhbNem.........ddddddddddddddddddddddddddddddddddddddddddeow=="}

请注意,接收到的数据是第二个发送的数据,但是该接收到的数据的结尾是第一个发送的数据的结尾。因此,缓冲区溢出可能是正确的。有什么解决办法吗?我有使用TCP套接字的相同程序,并且可以运行,但是现在,我需要使用本机消息传递。 STDIN缓冲区很小吗?

Jaime

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?