Рецепт серверного Flash
Запись от Lecosson размещена 29.05.2012 в 05:30
Да-да, я помню. Сейчас все любят оптимизацию серверов, стартапы, Ruby, HTML5, юникс, Crome и считают Flash умирающей платформой. А я пользователь Windows, люблю Firefox, обожаю ActionScript и пользуюсь им всего - генерации сложных SQL-запросов, обработки текстов и создания плагинов к Фотошопу. Если бы на нем можно было писать серверную часть сайтов – я бы это делал, в моем Eclipse разве что такого плагина не хватает.
Впрочем - почему нет?
Немного погуглив, я нашел на гитхабе проект mod_actionscript – модуль для Apache. Вероятно, это было как раз то, что надо, но сборки имелись только под *nix. Дальнейший поиск привел к родственному проекту Redtamarin. Это фактически тот самый флеш, только консольный. Подходит.
Для начала скачиваем и собираем пакет инструментов «redtamarin tools». После сборки получаем утилитку «EclipseExternalTools.exe», переносим ее в workspace Эклипса и запускаем, в результате получаем настроенный набор external tools для компиляции, отладки и запуска консольных ActionScript3 приложений.
Теперь создаем новый проект ActionScript. Не мудрствуя лукаво, я назвал его «redtamrin». Отрезаем Flex Framework – не нужен он на сервере. Из проекта «redtamarin tools» забираем несколько *.swc и подключаем их к проекту, чтобы получить автокомплит для классов, обеспечивающих работу с API операционной системы – чтение/запись файлов, сеть и т.п.
Поскольку я хочу не создавать десктопные приложения, а запустить AS3 на сервере, мне понадобится всего лишь правильный текст на выходе. Например, вот таким образом:
package { public class redtamarin { public function redtamarin () { var output:XML=<html/>; output.appendChild(<head/>); output.appendChild(<body/>); output.body[0].appendChild(<h1>test title</h1>); output.body[0].appendChild(<p>test paragraph</p>); trace(output.toXMLString()); } } } var html:*=new redtamarin();
Итак, серверный скрипт на нужном языке у нас есть. Теперь надо научить Apache распознавать его и отдавать браузеру.
Среди богатого набора модулей самого известного web-сервера есть «filter_module». Открываем конфиг «httpd.conf» нашего Денвера-Wamp-другой сборки и раскомментируем строку:
Код:
LoadModule ext_filter_module modules/mod_ext_filter.so
Код:
ExtFilterDefine abc-to-html mode=output intype=text/abc outtype=text/html cmd="… путь к директории на сервере … bin/processabc.bat" SetOutputFilter abc-to-html AddType text/abc .abc
Код:
GATEWAY_INTERFACE=CGI/1.1 PROMPT=$P$G SERVER_PROTOCOL=HTTP/1.1 REQUEST_METHOD=GET … тут еще много всего интересного … SERVER_ADMIN=…моя почта…@mail.ru SCRIPT_FILENAME=… путь на сервере …/www/redtamarin.abc REMOTE_PORT=47938 DOCUMENT_URI=/redtamarin.abc DOCUMENT_PATH_INFO=
Пишем в нашем «processabc.bat» следующее:
Код:
@echo off … путь на сервере … bin/redshell.exe %SCRIPT_FILENAME%
Открываем в браузере адрес http://… наш_сервер …/redtamarin.abc и видим простейшую HTML-страницу, которую мы запрограммировали на ActionScript. Нажатие Ctrl-U показывает следующее:
PHP код:
<html>
<head/>
<body>
<h1>test title</h1>
<p>test paragraph</p>
</body>
</html>
Всего комментариев 12
Комментарии
29.05.2012 10:31 | |
Действительно, аллилуйя. Что там с GET и POST запросами?
|
|
Обновил(-а) alexcon314 29.05.2012 в 10:43
|
29.05.2012 10:49 | |
Теперь осталось узнать - зачем?
|
29.05.2012 11:20 | |
Прикольно
Ещёб JS с синтаксисов AS3, вообщеб здорово было |
|
Обновил(-а) Tails 29.05.2012 в 11:29
|
29.05.2012 12:02 | |
Astraport, just for fun.
|
29.05.2012 12:07 | |
Talis, вообще-то это он и есть. ActionScript - это следующий Javascript, как он был задуман, плюс набор флешовых классов. Тамаринчик же
|
29.05.2012 14:15 | |
alatar Это было бы круто. Ещё можно было бы вебсервер оставить вебсервером пусть nginx соблюдает все формальности http, а приложение получает уже от него переработанные запросы и отвечает на них.
|
|
Обновил(-а) Aquahawk 29.05.2012 в 14:18
|
29.05.2012 17:52 | |
Alatar, все верно. Просто стало интересно - попробовать саму возможность. А готовых решений для домашнего компа под Win не нашлось.
|
01.06.2012 14:06 | |
Ну если делать гаму с синхронизацией, то было бы не плохо, что бы код отвечающий за логику был не просто анологичным на клиенте и на сервере, а тем же самым.
|
01.06.2012 18:12 | |
Инквизитор, согласен. Особенно приятно то, что код был бы общим для серверной и клиентской части - вынести модели и контроллеры в отдельную swc и подключать к обеим частям проекта.
|
Последние записи от Lecosson
- генератор ландшафта (21.12.2013)
- Рецепт серверного Flash (29.05.2012)
- Класс настроек в ActionScript 3 (19.07.2010)