2016-01-21 31 views
0

G-WAN会为每个用户请求启动一个新的NodeJS实例吗? (即,如果您将JavaScript用于servlet)例如,如果100个用户同时请求由特定脚本处理的操作。G-WAN,NodeJS和Streaming

我的首要问题去与脚本G-WAN与非C/C++语言...可以从sendfile一个JavaScript servlet的使用?我想将大文件传输到不在www文件夹中的客户端,而是从服务器上的指定文件路径传输。这可能吗?如果没有,NodeJS的流媒体可以用于G-WAN吗?

回答

0

您可以从G-WAN流式传输内容;您可以从Node.JS流式传输内容。选择一个或另一个取决于你有什么其他的要求,因为可以支持流式内容提供你提到的负载类型(假设合理的系统资源)。我有一个小型的Node.JS服务器进行一些URL重写和反向代理服务来为我们从第三方获得许可的内容提供服务。它完全独立于G-WAN服务器,可根据需要使用HAProxy路由请求。根据我刚刚在G-WAN上学到的JavaScript,我不想走这条路。从你所描述的内容来看,我会坚持使用C语言(或者可能C++或G-WAN可以加载为动态模块的其他语言之一)编写servlet和处理程序的纯粹G-WAN方法。

从个人的经验,我建议下简单,性能和紧凑。 C++也是一个不错的选择。 G-WAN小服务程序和处理程序通常只是很小的代码片段 - 尤其是与编写完整的应用程序相比 - 因此即使您不擅长这些语言,也可以在此处使用C或C++。

看看10线-的-C代码执行近G-WAN User's Manual底部的FLV流光。其他相关的例子是stream1.c,stream2.cstream3.c

要开始使用,我建议您按照10-second G-WAN installation process下载并安装G-WAN,然后调整servlet示例代码以提供您拥有的某些内容(即根据需要更改路径和文件名)。

祝你好运!
Ken

+0

**仅供参考:** G-WAN的JavaScript实现由NodeJS处理(您必须安装node.js)。所以我的意思是使用JavaScript servlet,你可以流式传输一个不在'www'文件夹中的文件,而是在磁盘上的某个位置?我试图建立一个安全的文件托管系统 –

+0

哇,这是我对G-WAN的JavaScript机制的新闻。我会稍微调整一下我的答案。我仍然建议选择C或至少一种其他语言,以便在运行时将代码动态绑定到服务器。为了提供不在www/...路径中的内容,我使用了像Gil建议的符号链接,然后我有一个404处理程序,它可以动态地生成并提供缺少的内容(即,下一个相同位的请求将会在符号链接的位置找到它)。 – Kenigmatic

1

G-WAN会为每个用户请求启动一个新的NodeJS实例吗?

不同于其它语言(C/C++, Objective-C/C++, C#, PH7, Java, and Scala),Javascript没有装载作为模块和相当执行作为CGI过程,就像Zend PHP,或Perl

所以,是的,Node.js的将不良,除非你使用caching规模(无论是G-WAN的或你的)。

sendfile可以从JavaScript servlet中使用吗?

是的,但是G-WAN拥有自己的异步机器,它肯定比“G-WAN方式”更有效率(Ken建议)。

如果您坚持使用Javascript中的sendfile(),请记住您必须以非阻塞模式使用它并自己管理异步事件(同步调用阻塞当前G-WAN工作线程)。

我可以将文件流式传输到不在www文件夹中的客户端吗?

是的,你可以只使用一个系统symlink到国外的文件夹映射到/ WWW资源 - 或者你可以从G-WAN handlerservlet内流内容。

+0

谢谢,但我似乎无法找到任何关于从JavaScript servlet使用'sendfile()'的例子,我只看到C例子 –

+0

大多数G-WAN例子都是用C语言编写的,原因很简单:CPU/RAM占用空间G-WAN。一旦使用像JS或Java这样的运行时,您可以为humungus库集合(其中许多是小型G-WAN API冗余,有时与它冲突)交易简单性。同居对​​于许多情况而言非常有用,并让您选择正确的工具来完成特定的任务。不要试图在JS中做什么应该在C中做什么。 – Gil

+0

我认为一个简单的**不,你不能这样做在JS **会帮助...不是每个程序员都与C家庭, m绝对不会为GWAN学习C。无论如何,谢谢,我想我不得不求助于NodeJS的流媒体API和NginX –

0

在servlet中直接嵌入VM(Spidermonkey)还有其他选择。

+0

但是,然后,这将可用于服务器编程或只是为了执行代码的JavaScript片段,它不会真的像服务器端脚本...我是一个JavaScript(NodeJS)dev ....没有C/C++背景 –

+0

@Onenepee Peps可以通过https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS_DefineFunction向您的脚本公开G-WAN API(或任何本机功能)。所以,是的,它是可用的,但首先需要一些C++工作 – deepinit