В продолжение темы про Wampy.js, мою JS-библиотечку, реализующую клиент WAMP, я подумал, что неплохо бы написать и серверную реализацию WAMP, потому как сейчас единственная реализация роутера WAMP — это AutobahnPython. Так появилась на свет Wiola — реализация WAMP-роутера на Lua на базе nginx/openresty и модулей к ним для работы с Lua.
Wiola использует lua-nginx-module, lua-resty-websocket module для обработки клиентских соединений по вебсокету, поддерживается сериализация в json (через cjson библиотеку) и в msgpack (используя lua-MessagePack библиотечку), все данные хранятся в redis, так что так же используется lua-resty-redis module. Все lua модули — не блокирующие, написаны с использованием энжинксовских корутин. Спасибо большое товарищу Юджину @agentzh Чангу за все lua модули.
Wiola поддерживает как pubsub так и rpc с расширенными возможностями. Код лежит на гитхабе, с подробной документацией. Из приятных мелочей, чтобы запустить WAMP-сервер, надо просто взять wiola, сконфигурить хост в openresty, поднять redis и все 🙂 Не надо писать ни строчки кода.
Я пока не проводил нагрузочного тестирования, так что не могу сказать насколько оно все шустро работает. Постараюсь провести. Но вообще должно работать шустро. Надеюсь кому-то пригодится!