Jii: Масштабований комет сервер і клієнт

Продовжую серію статей про Jii Framework. Сьогодні настав момент релізу комета, про яке я розповім в цій статті.



Jii-comet — це масштабований, готовий до високих навантажень і поганого інтернету транспорт, реалізує постійний зв'язок між клієнтом і сервером для миттєвого обміну даними.

Jii-comet надає набір компонентів і класів, які спрощують обмін повідомленнями між каналами, передплати на них, обміну даними між серверами і так далі. Сам модуль не вміє доставляти повідомлення на клієнт і назад, але в ньому закладена абстракція, щоб це можна було робити будь-який з існуючих популярних бібліотек (наприклад, socket.io, sockjs), а так само щоб це було надійно і масштабируемо.

Читати далі →

Jii: Повноцінне додаток з архітектурою Yii2 в браузері

Привіт всім хабровчанам, любителям Yii та Node.js. Продовжую серію статей про Jii, цього разу настала черга розповісти про те, що Jii можна використовувати в браузері.


Уявіть, вже зараз всі структури фреймворку, такі як програми, компоненти, контролери, модулі, моделі, подання доступні в браузері!

Читати далі →

Як виправити помилку у Node.js і ненавмисно підняти продуктивність в 2 рази

Почалося все з того, що я оптимізував віддачу помилки HTTP 408 Request Timeout в сервері додатків Impress, працюючому на Node.js. Як відомо, у нодовского http.Server є подія timeout, яке повинно викликатися для кожного відкритого сокета, якщо той не закрився за вказаний час. Хочу уточнити, що не для кожного запиту тобто не для кожної події request, функція якого має два аргументи (req, res), а саме для кожного сокета. Через один сокет може послідовно вчинити багато запитів у режимі keep-alive. Якщо ми задаємо це подія, через server.setTimeout(2 * 60 * 1000, function(socket) {… }) то повинні самі знищувати сокет socket.destroy(). Але якщо не встановити свій обробник, то http.Server має вбудований, який знищить сокет через 2 хвилини автоматично. На цьому самому таймауте можна віддати помилку 408 і вважати інцидент вичерпаним. Якби не одне але… З подивом я виявив, що подія timeout викликається і для тих сокетів, які підвисли і для вже отримали відповідь і для закритих клієнтської стороною, взагалі для всіх, що знаходяться в режимі keep-alive. Це дивна поведінка виявилося досить складним, і я розповім про це нижче. Можна було б вставити одну перевірку подія timeout, але зі своїм ідеалізмом я не втримався і поліз виправляти баг на рівень глибше. Виявилося, що в http.Server режим keep-alive реалізований не те що не по RFC, а відверто не дописаний. Замість окремого timeout для з'єднання і окремого keep-alive timeout, там все на одному таймауте, який реалізований на найшвидших псевдо-таймери (enroll/unenroll), але заданий за замовчуванням в 2 хвилини. Це було б не так страшно, якби браузери добре працювали з keep-alive і переиспользовали його ефективно або закривали б невикористовувані з'єднання.
Читати далі →

Нові можливості io.js, які Ви не використовуєте

Оригінал: New io.js Features You May Not Be Using

Платформа io.js розвивається швидкими темпами, справляючи великий вплив на всю екосистему Node. За короткий час в io.js було внесено безліч виправлень, покращена продуктивність, а також додані нові можливості і функції.

Якщо Ви не стежили за розвитком io.js нічого страшного — у даній статті ми коротко представимо основні можливості платформи. Розглядати їх ми по мірі виходу, тобто від старих до нових. Де це буде потрібне, дамо посилання на відповідну документацію (англійською мовою). Описуючи кожну нову функціональність, будемо вказувати її першу версію. Код написаний з використанням стандартних функцій ES6, які доступні в io.js. Отже, почнемо…
Читати далі →

io.js об'єднується з NodeJS

<img src=«habrastorage.org/getpro/habr/post_images/6da/ead/38f/6daead38f9f56d3565f27f5026480488.jpeg» width=«159» висота=«159»/> +

Кілька днів тому відбулося засідання технічного комітету проекту io.js, на якому прийнято рішення про возз'єднання з Node.js і надалі спільному розвитку під егідою організації Node Foundation.

Читати далі →

Новий движок javascript на підручника IO.JS в open source

Всім привіт,

Як і багато хто, я довго писав на Node.JS тільки високопродуктивні сервіси, але коли в 0.11 зробили генератори і кілька моїх колег підтвердили, що вони працюють на production, вирішив зробити на цій платформі новий підручник JavaScript.

Зручність генераторів для асинхронного JS-коду складно переоцінити. При бажанні він стає «плоским», менше букв, ніж чисті promise/async.

Хотілося зробити движок швидким, простим у розробці і мати можливість запускати деякі модулі та на сервері, і на клієнті.

Вийшло, якщо не наплутав при підрахунку, близько 24000 рядків коду (без сторонніх node_modules).


Читати далі →

SummaryJS, випуск 3

Операційні системи, втрачені і знайдені внебраузерным джаваскриптом

У минулому році поняття «внебраузерный JavaScript» найчастіше означало движок Node.js (а не, припустимо, Rhino або SpiderMonkey, сильно поступаються йому популярності в цій області) або який-небудь підсумок його вбудовування (наприклад, node-webkit).

У нинішньому році в гру вступають форки Node (наприклад, io.js), і їх почали вбудовувати — наприклад, проект node-webkit перейменувався nw.js, тому що тепер він використовує не Node, а io.js (та й не WebKit, а Blink — з тих давніх пір, як Chromium перейшов на цей движок).

Для програмістів це означає, зокрема, що може відвалитися (або, навпаки, з'явитися) підтримка тієї чи іншої операційної системи. Давайте поговоримо про це.

Які операційні системи перестають підтримуватися?

По-перше, перші версії io.js не можна було встановити на Windows XP, не можна було встановити і на Windows 2003. Ще в середині січня здавалося, що з цим нічого не можна вдіяти: пояснення «io.js компілюється в Visual Studio 2013 Windows Desktop Edition, тому що движок V8 став покладатися на можливості C++11» сприймалося як вирок - проте потім розробники поправили справа, так що у файлі CHANGELOG.md гілки v1.x можна прочитати, що підтримка цих версій Windows повернулася io.js, починаючи від версії io.js 1.0.3 (20 січня).

Подібно колам на воді, ці зміни пройшли по всій екосистемі движків; наприклад, nw.js версії 0.12.0-alpha3 на підтримку ще можна сподіватися (хоча особисто я ще не встиг поганяти цю версію Windows XP), а в попередніх альфа-версії її точно немає (тому що вони засновані на більш ранніх версіях io.js).

По-друге, KaneUA 19 лютого згадав, io.js не підтримує тридцатидвухбитные версії OS X, на відміну від Node.

Підтримка яких операційних систем може з'явитися?


Читати далі →