15. Вариант на Python
• asyncio (aiohttp + websockets)
• акторы, общение через очередь
• код на JavaScript
16. @asyncio.coroutine
def handler(websocket, _path):
new_image_receiver = ProcessQueue()
SubscriptionManager.subscribe(TAG, new_image_receiver)
while True:
message = yield from new_image_receiver.receive()
if not websocket.open:
SubscriptionManager.unsubscribe(TAG, new_image_receiver)
break
yield from websocket.send(json.dumps(message))
var socket = new WebSocket("ws://127.0.0.1:8765");
socket.onmessage = function (event) {
var msg = JSON.parse(event.data);
var img = document.createElement('img');
img.src = msg.images.low_resolution.url;
var pics = document.getElementById('pics');
pics.insertBefore(img, pics.firstChild);
}
18. Выводы
• n2o быстр, как в плане работы, так и в плане
разработки
• Можно не писать HTML и JavaScript
• Гибкость. Толстый клиент и REST endpoint, либо
умный сервер и простой клиент.
• Все плюсы Erlang
19. Выводы
• Свой DSL
• Нет нормальной документации API (но есть
Nitrogen API)
• Сыроват, меняется, нет тестов.