Friday, February 10, 2012

Node.js - все гениальное просто

Недавно посмотрел ролик Райана Дала (Ryan Dahl), идейного вдохновителя и создателя платформы для быстрых и масштабируемых сетевых приложений node.js. Очень понравилась простота и легковесность этого решения. Node.js - модная и активно развивающаяся платформа, интересно, что ее уже активно используют в eBay. Собственно, я и начал это исследование, вдохновленный идеей ql.io от eBay (тут анонс)

1. Инсталлируем
Скачиваем отсюда и ставим как обычно. Я еще добавил в пользовательские пути

Пробуем запустить из консоли. Открылась консоль, в которой можно побаловаться и позапускать Javascript функции и выражения.

Node.jsпостроен на javascript движке V8 от google. Этот движон используется в chrome. Естественно, что в консоли node нету обьектов браузера, но можно посмотреть process()

2. Hello World!
Напишем такую вот програмку:

И запустим. После чего сначала появится Hello, затем через 2 секунды world


После выполнения - вернулись в командную строку. Теперь попробуем сделать так:


Приложение не завершается, т.к. есть что делать (колбек, который надо вызывать каждые 2 сек)


3. Пишем веб-сервер
Ок, Javascript в консоли - это, конечно, очень круто, но давай напишем серверное приложение


И запустим его. Интересно посмотреть на http headers. Смотрим с помощью curl это curl –i http://localhost:8000


4. Делаем Server push
Hello World - это элементарно. Концепция асинхронной событийной модели node.js позволяет так же элементарно реализовывать server push, как и в примере с выводом на консоль.

Этот примерчик немножно посложнее. После Hello каждые 2 секунды будем выводить World N, где N - это значение каунтера. Будем выводить, пока не надоест, а надоест нам через 5 выводов



Вывод. В этом примере, конечно, не рассматриваются преимущества асинхронной событийной модели при разработке, но такой подход все чаще используется. Это связано с возросшей нагрузкой на серверные ресурсы, которая особенно стала заметна после появления Web 2.0 и постоянно растущем количестве nice-and-sexy online приложений где пользователю не надо жать Refresh чтобы получить новую порцию данных.
Подробнее о преимуществах и как это устроено можно посмотреть здесь или здесь или в моей презентации с Ciclum Java Saturday, которую расшарю позже

No comments:

Post a Comment