关于electron 和nodejs之间的关系的疑问

来源:csdn博客 分类: 文章浏览史 发布时间:2020-10-11 10:55:07 最后更新:2020-10-11 浏览:44
转载声明:
本文为摘录自“csdn博客”,版权归原作者所有。
温馨提示:
为了更好的体验,请点击原文链接进行浏览
摘录时间:
2020-10-11 10:55:07

最近遇到了一些问题,是关于TCP通信这一块的。
electron的简介中提到,是把Chromium和Node.js合并到同一个运行时环境中

那是不是意味着无论是v8的API或者是NODE的模块我都能正常使用呢?而在开发过程中我发现并不是这样的,或者说,简介中提到的合并nodejs到同一个运行时环境并不包括node的运行时环境。

举个简单的例子,原本我们项目需要兼容各端做 长连接的,所以打算使用socket而不是websocket,第一反应就是用node的net模块。 并且使用google protobuf来编解码。但是问题也相继而来。

google protobuf编码后返回的是一个uint8Array数据,是一个object,而用net模块发送消息,必须是string或者buffer

我找了很多资料。在前端这一块是没有buffer这个对象的,比如我通过node模块写一个buffer,然后打印。在node环境中直接运行输出 <Buffer xx>数据,而在前端则输出 uint8Array,是一个数组。这种TypedArray是一种通用的固定长度缓冲区类型,允许读取缓冲区中的二进制数据,尽管uint8Array.buffer属性是对arraybuffer的引用,通过net.socket.write方法,还是会报错,因为arraybuffer的引用还是一个object。

所以我对于electron中 chromium和node.js合并到同一个运行时坏境这句话抱有很大的疑问。

new Buffer产生的对象在前端永远表示为uint8Array!

结论:electron集成的v8引擎和node中的V8不完全一致,官方有说明

php技术微信