问题 Node.js可以在Chrome中使用其本机客户端运行客户端(即将发布)


谷歌Chrome的本机客户端即将发布。 http://blog.chromium.org/2011/02/native-client-getting-ready-for-takeoff.html 这是否允许node.js在浏览器中运行,使分布式应用程序能够相互通信而无需通过服务器?


3279
2018-02-22 16:52


起源



答案:


node.js不是纯粹的Javascript代码。它的一部分用C ++编写,所以这不太可能。

分布式通信有几种可能性。一种是使用浏览器中的Websockets api与其他浏览器进行通信。另一个是在与浏览器相同的机器上将node.js作为单独的服务器进程运行。

第二个是构建分布式应用程序的更好选择,因为它减少了对浏览器的依赖。 node.js的0.5.0pre版本现在可以在Cygwin上构建好,并且可以将Cygwin的基本组件捆绑为独立的二进制文件以分发给Windows客户端。 旧版本的node.js曾经以这种方式分发。


1
2018-02-22 17:07



节点用C语言编写: hackermedley.org/new-web-tech 由于chrome的本机客户端将允许在浏览器中使用本机代码,我想也许可以使用节点.. - Sycren
我最近构建了0.5.0pre的node.js,src文件夹中充满了.cc文件,其行如下所示:static Persistent <Object> process;但这是一个小细节,因为本机客户端允许C和C ++。一个更复杂的问题是Javascript引擎。你绑定第二个,以便node.js有自己的或你以某种方式利用现有的。它不会像简单的插件那么容易。 - Michael Dillon
@Sycren:这取决于你如何定义书面。 Node.js主要是V8,V8是C ++! - adamse
由于Chrome使用V8作为其javascript引擎,nodeJS是否可以与Chrome一起使用?如果只是在理论上。 - Sycren


答案:


node.js不是纯粹的Javascript代码。它的一部分用C ++编写,所以这不太可能。

分布式通信有几种可能性。一种是使用浏览器中的Websockets api与其他浏览器进行通信。另一个是在与浏览器相同的机器上将node.js作为单独的服务器进程运行。

第二个是构建分布式应用程序的更好选择,因为它减少了对浏览器的依赖。 node.js的0.5.0pre版本现在可以在Cygwin上构建好,并且可以将Cygwin的基本组件捆绑为独立的二进制文件以分发给Windows客户端。 旧版本的node.js曾经以这种方式分发。


1
2018-02-22 17:07



节点用C语言编写: hackermedley.org/new-web-tech 由于chrome的本机客户端将允许在浏览器中使用本机代码,我想也许可以使用节点.. - Sycren
我最近构建了0.5.0pre的node.js,src文件夹中充满了.cc文件,其行如下所示:static Persistent <Object> process;但这是一个小细节,因为本机客户端允许C和C ++。一个更复杂的问题是Javascript引擎。你绑定第二个,以便node.js有自己的或你以某种方式利用现有的。它不会像简单的插件那么容易。 - Michael Dillon
@Sycren:这取决于你如何定义书面。 Node.js主要是V8,V8是C ++! - adamse
由于Chrome使用V8作为其javascript引擎,nodeJS是否可以与Chrome一起使用?如果只是在理论上。 - Sycren


如今有几种解决方案允许您在chrome中运行一些Node模块。看看这些链接:


11
2017-11-11 15:22





截至今天,Node.js不会在NaCl中运行,但最终可能会运行。 Node使用V8 JavaScript引擎来执行代码。目前,没有可靠的V8发动机端口将在NaCl内运行。

根据Brad Chen 2014年1月28日的评论,在线程中“有人尝试将Blink和V8移植到Native Client吗?”:

V8已经移植到Native Client,虽然端口使用了   让V8生成ARM指令然后使用a的令人讨厌的技巧   便携式ARM解释器,以避免端口V8代码生成器   到NaCl。你应该能够通过检查V8源来观察这一点   并遵循使用目标的标准构建/测试说明   nacl_ia32或nacl_x64。

https://groups.google.com/d/msg/native-client-discuss/Xw5yCe3Ubwc/fgm6M092DXwJ

考虑到V8已经能够在NaCl下运行,尽管有不可靠的黑客,但可以合理地假设Node最终能够在NaCl中运行。我意识到你的问题现在已经有三年了,但我认为我提供了一个更新的答案,因为在浏览器中运行本机代码(甚至是OpenGL代码)现在已成为现实。


4
2018-04-14 21:58





您无法在浏览器中运行Node.js.

但是,如果要进行P2P连接,则可以在浏览器中安装最新版本的Flash(Flash 10)。在最新版本中,他们介绍了 RTMFP 让你在不通过服务器的情况下进行P2P连接。如果你想在Javascript中使用它,你可以建立一个桥梁,或者你可以看一看 我最近开始的一个项目 这正是如此。


0
2018-02-22 18:04



我正在寻找一种方法,以类似的方式将蛋白质折叠算法分发给其他计算机。虽然现在不可能运行node.js,但我希望将来某个时候可能会这样 - Sycren
@Sycren你可以看看 BOINC 这是为了这样的东西。它不是基于浏览器的,而是基于桌面的硬盘。 - HoLyVieR
我正在考虑通过浏览器这样做,因为这将在以后的日子里变得更加重要。我也希望在某种程度上使用javascript进行编程意味着一组代码而不是每个操作系统略有不同像java虚拟机一样。虽然你可以说浏览器会以不同的方式使用js,但我认为浏览器的数学函数不会改变太多 - Sycren
@Sycren为诸如此类的事情做计算 protein folding 你不应该在Javascript和浏览器中这样做。 Javascript本身不支持大数字,不能进行并行处理。如果您在浏览器网页中进行大量计算,该网页将停止响应,浏览器可能会自动停止脚本。如果你想进行网格计算,可能就是BOINC。我从来没有亲自使用它,但我知道它被大量用于科学计算。 - HoLyVieR
虽然我理解这一点,但我会以不同的方式使用它。最近的浏览器更新允许硬件加速,将来我们可能会看到openCL或CUDA。 Chrome已经可以看到早期的实验。通过使用接口和通过浏览器进行通信的gpu和cpu上运行的本机代码进行计算。 - Sycren