Node.js是否能够在Chrome浏览器的客户端运行,使用其即将发布的原生客户端技术?

11
4个回答

12

现在有几种方案可以让你在Chrome中运行一些Node模块。请查看以下链接:


4
截至今日,Node.js无法在NaCl中运行,但是最终可能有可能。Node使用V8 JavaScript引擎执行代码。目前没有可靠的V8引擎移植版本可以在NaCl中运行。
来自Brad Chen于2014年1月28日的评论,位于“Has anyone tried porting Blink and V8 to Native Client?”线程中:
“V8已经被移植到Native Client,尽管该移植使用了一个不太好的技巧,即让V8生成ARM指令,然后使用可移植的ARM解释器来避免需要将V8代码生成器移植到NaCl。您应该能够通过检查V8源代码并按照标准的构建/测试说明使用目标nacl_ia32或nacl_x64来观察到这一点。”

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

考虑到V8已经能够在NaCl下运行,尽管存在不可靠的hack,可以合理地假设Node最终也能在NaCl上运行。我知道你的问题已经三年了,但是考虑到现在在浏览器中运行本地代码甚至OpenGL代码已经成为现实,所以我想提供一个更新的答案。

1

node.js不是纯JavaScript代码。其中有部分是用C++编写的,因此这是不太可能的。

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

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


2
Node是用C语言编写的:http://hackermedley.org/new-web-tech/ 由于Chrome的本地客户端允许在浏览器中使用本地代码,我认为可能可以使用Node。 - Sycren
我最近构建了node.js的0.5.0pre版本,src文件夹中充满了像这样的.cc文件: static Persistent<Object> process; 但那只是个小细节,因为本地客户端允许使用C和C++。更复杂的问题是Javascript引擎。您是在绑定第二个引擎,以便node.js拥有自己的引擎,还是您以某种方式利用现有的引擎。这不会像简单的插件那么容易。 - Michael Dillon
1
@Sycren:这取决于你如何定义所谓的“编写”。Node.js 主要是基于 V8,而 V8 是 C++! - ase
由于Chrome使用V8作为其JavaScript引擎,理论上是否可能让nodeJS与Chrome一起工作? - Sycren

0

你不能在浏览器中运行Node.js。

然而,如果你想进行P2P连接,只要浏览器安装了最新版本的Flash(Flash 10),就可以实现。在最新版本中,他们引入了RTMFP,它可以让你直接进行P2P连接,无需通过服务器。如果你想在Javascript中使用它,你可以建立一个桥梁,或者你可以看看我最近开始的一个项目,它正是这样做的。


我正在寻找一种像比特流传播方式一样,将蛋白质折叠算法分发到其他计算机的方法。虽然现在无法运行node.js,但我希望未来可能会有这个可能性。 - Sycren
@Sycren 你可以看一下BOINC,它是为这类任务而设计的。虽然它不是基于浏览器的,但是它是基于桌面的。 - HoLyVieR
我正在考虑通过浏览器来完成这个任务,因为这在未来会变得更加重要。我也希望以编写JavaScript的方式意味着只需要一套代码,而不是为每个操作系统编写略有不同的代码,就像Java虚拟机一样。尽管你可以争论浏览器将以不同的方式使用js,但我认为浏览器中的数学函数不会发生太大变化。 - Sycren
@Sycren 如果要进行诸如“蛋白质折叠”之类的计算,您不应该在Javascript和浏览器中进行。 Javascript不支持大数字和并行处理。如果您在浏览器网页中进行重型计算,该网页将停止响应,并且浏览器可能会自动停止脚本。如果您想进行网格计算,BOINC可能是最好的选择。我个人从未使用过它,但我知道它被广泛用于大规模科学计算。 - HoLyVieR
虽然我理解了这个问题,但是我会以不同的方式使用它。浏览器的最新更新支持硬件加速,并且未来可能会看到openCL或CUDA的发展。在Chrome中可以看到早期的实验。通过在GPU和CPU上运行本地代码并通过浏览器进行接口和通信来进行计算。 - Sycren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接