2016-01-21 2 views
0

Развертывает ли G-WAN новый экземпляр NodeJS для каждого запроса пользователя? (т. Е. Если вы используете JavaScript для сервлета) Например, если 100 пользователей запросят действие одновременно с обработкой определенного скрипта.G-WAN, NodeJS и потоковая передача

Мой основной вопрос связан со сценарием G-WAN с не-C/C++ языками ... можно использовать sendfile из сервлета JavaScript? Я хочу передать большие файлы клиентам, которые не будут находиться в папке www, а скорее из указанного пути к файлу на сервере. Это возможно? Если нет, может ли потоковая передача NodeJS использоваться в G-WAN?

ответ

0

Вы можете передавать контент из G-WAN; вы можете передавать контент из Node.JS. Выбор того или другого зависит от того, какие другие требования у вас есть, поскольку они могут поддерживать потоковое содержимое для типа загружаемых вами ресурсов (при условии разумных системных ресурсов). У меня есть небольшой сервер Node.JS, который делает некоторые перезаписи URL-адресов и обратного прокси-сервера, чтобы обслуживать контент, который мы лицензируем от третьего лица. Он полностью отделен от сервера G-WAN, с запросами маршрутизации HAProxy. Из того, что я только что узнал о JavaScript под G-WAN, я бы не хотел идти по этому маршруту. Из того, что вы описываете, я придерживаюсь чистого подхода G-WAN с использованием C (или, возможно, C++ или одного из других, который G-WAN может загружать как динамические модули) для написания сервлетов и обработчиков.

Из личного опыта я рекомендую C для простоты, производительности и компактности. C++ также является хорошим выбором. Сервлеты и обработчики G-WAN часто представляют собой довольно небольшие фрагменты кода, особенно по сравнению с написанием полного приложения, поэтому вы можете использовать C или C++ здесь, даже если вы не являетесь экспертом в этих языках.

Посмотрите на реализацию 10-строчных C-кодов FLV-стримера в нижней части G-WAN User's Manual. Другими соответствующими примерами являются stream1.c, stream2.c и stream3.c.

Чтобы начать работу, я рекомендую загрузить и установить G-WAN после 10-second G-WAN installation process, а затем настроить код примера сервлета, чтобы обслуживать некоторый контент (т. Е. Изменить пути и имена файлов по мере необходимости).

Удачи вам!
Кен

+0

** FYI: ** Реализация JavaScript G-WAN - это дескриптор NodeJS (у вас должен быть установлен node.js). Итак, я имею в виду использование сервлета JavaScript, можете ли вы передать файл, который не находится в папке 'www', а скорее где-то на вашем диске? Я пытаюсь создать безопасную систему хранения файлов –

+0

Вау, это была новость для меня о механизмах JavaScript G-WAN. Я немного подкорректирую свой ответ. Я по-прежнему рекомендую выбрать C или хотя бы один из других языков, которые позволят вашему коду динамически привязываться к серверу во время выполнения. Для того, чтобы обслуживать контент не в пути www/..., я использую символические ссылки, как предложил Гил, а затем у меня есть обработчик 404, который генерирует и обслуживает - недостающее содержимое динамически (т. Е. Следующий запрос для одних и тех же битов будет найдите его в местоположении symlink'd). – 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?

Да, но G-WAN имеет свои собственные асинхронные механизмы, это, безусловно, более эффективно для этого «путь G-WAN» (как предложил Кен).

Если вы настаиваете на использовании sendfile() из Javascript, имейте в виду, что вам придется использовать его в неблокирующем режиме и самостоятельно управлять асинхронными событиями (синхронные вызовы BLOCKING текущего рабочего потока G-WAN).

Можно ли передавать файлы клиентам, которые не будут находиться в папке www?

Да, вы можете просто использовать систему symlink отобразить внешнюю папку в/WWW ресурса - или вы можете передавать содержимое изнутри G-WAN handler или servlet.

+0

Спасибо, но я не могу найти никакого примера относительно использования 'sendfile()' из сервлета JavaScript, я вижу только примеры C –

+0

Большинство примеров G-WAN находятся на C по простой причине: площадь процессора/оперативной памяти, например G-WAN. Когда вы используете среду выполнения, такую ​​как JS или Java, вы торгуете простотой для коллекций библиотек humungus (многие из них избыточны с API G-WAN с небольшим размером и иногда конфликтуют с ним). Сожительство отлично подходит для многих случаев и позволяет вам выбрать правильный инструмент для выполнения конкретных задач. Не пытайтесь делать в JS то, что должно быть сделано в C. – Gil

+0

Я думаю, что простой ** Нет, вы не можете сделать это в JS **, помогли бы ... не каждый программист - это семья с C, m определенно не собираюсь учиться C для GWAN. В любом случае, спасибо, я полагаю, мне придется прибегнуть к потоковым API NodeJS и NginX –

0

Существует также другая возможность использования JS путем непосредственного внедрения VM (Spidermonkey) в сервлет.

+0

Но тогда это будет полезно для программирования на сервере или просто для выполнения фрагментов кода JavaScript, которые не будут похожи на сценарии на стороне сервера ... Я разработчик JavaScript (NodeJS) .... нет C/C++ background –

+0

@Ohenepee Peps. Вы можете предоставить G-WAN API (или любые собственные функции) для своих скриптов через https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS_DefineFunction. Итак, да, это было бы полезно, но сначала требуется работа на C++ – deepinit

Смежные вопросы