2010-06-06 2 views
32

Я играл с node.js (nodejs) в течение последних нескольких дней, и это фантастика. Насколько я могу судить, lua не имеет аналогичной интеграции libev и libio, что позволяет избежать практически любых блокирующих вызовов и взаимодействовать с сетью и файловой системой асинхронно.Node.js для lua?

Я медленно переношу реализацию java на nodejs, но я шокирован тем, что luajit намного быстрее, чем JavaScript v8, и использует гораздо меньше памяти!

Я думаю, что писать мой сервер в такой среде (очень быстрое и отзывчивое, очень малое использование памяти, очень выразительное) улучшит мой проект.

Будучи новым для lua, я просто не уверен, существует ли такая вещь. Буду признателен за любые указатели.

Благодаря

ответ

2

Вы можете получить Node.js стиль неблокирующая IO с lua-handlers.

У него даже есть асинкс. HTTP Client, что позволяет легко запускать параллельные HTTP-запросы. См. Файл test_http_client.lua в качестве примера клиентского интерфейса HTTP.

23

Недавно соответствующий проект Luvit «(Lua + libUV + jIT = чистый awesomesauce) ".

Из announcement:

это в основном luajit2 + libuv (библиотека цикл событий за nodejs). Он компилируется как один исполняемый файл, как nodejs, и может запускать файлы .lua . Что отличает его от дистрибутива luajit , у него есть несколько встроенных модулей, а некоторые немного отличаются семантикой.

Обратите внимание, что мы не работаем как сценарий CGI для apache или чего-то еще . Сценарий lua - это http-сервер. Вы получаете свой обратный вызов каждый раз, когда HTTP-запрос делается на сервере.

3

luvit предназначается для Lua точно, что Node.js для Javascript. Определенно перспективный проект.

5

Возможно, вы захотите взглянуть на Luvit или на gander на сайте Lua Github. Я думаю, что он использует подход к реализации Node.js функциональности прямо внутри Lua. Вы пишете код Lua на стороне клиента и на стороне сервера. Вот описание Luvit approach to doing Node.js functionality in Lua.

6

Вы также можете посмотреть на LUV:

https://github.com/richardhundt/luv

из списка рассылки Lua:

Как Luv относятся к Luvit - LuaJIT + libuv (Node.js : s/JavaScript/Lua /)?

На самом деле это не так. Luvit сильно зависит от архитектуры node.js (обратные вызовы реактора и т. Д.), Связывает статически с luajit, обеспечивает собственную систему модулей и исполняемый файл. Luv - это просто модуль Lua, который привязан к libuv. Главное отличие заключается в том, что Luv больше похож на механизм потоковой передачи m-n , сочетающий сопрограммы и потоки ОС при использовании цикла событий libuv под капотом.

Так что, помимо факта, что они оба связываются с libuv, у них нет много общего.

1

Вы также должны проверить Lapis. Это очень легкий и быстрый механизм для OpenResty: http://leafo.net/lapis/

Я действительно наслаждался этим и предсказывал, что у него будет светлое будущее!

Как и следовало ожидать, с чем построен использовать OpenResty, это тесты безумно хороши: https://www.techempower.com/benchmarks/#section=data-r12&hw=peak&test=query

Автор Ляпис также написал CoffeeScript-подобный язык для Lua называется MoonScript, который довольно хорошо: http://moonscript.org/

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