Розкриття: Я є автором Faye.
- Щодо Фей, все, що ви сказали, є правдою.
- Faye реалізує більшість Bayeux, єдине, чого зараз бракує, - це сервісні канали, в яких я ще не переконаний у своїй корисності. Зокрема, Faye розроблений таким чином, щоб бути сумісним із еталонною реалізацією CometD Bayeux, яка має велике значення щодо наступного.
- Концептуально, так: Фей міг би використовувати Socket.IO. На практиці є певні бар'єри для цього:
- Я не маю уявлення про те, яку потребує серверна підтримка Socket.IO, і вимога, щоб клієнт Faye (є клієнти на стороні сервера в Node і Ruby, пам’ятайте) міг спілкуватися з будь-яким сервером Bayeux (і Faye сервер для будь-якого клієнта Bayeux) може бути автоматичним.
- Bayeux має специфічні вимоги до того, що сервери та клієнти підтримують певні типи транспорту, і розповідає, як домовитись, який з них використовувати. Він також визначає, як вони використовуються, наприклад, як тип вмісту запиту XHR впливає на інтерпретацію його вмісту.
- Для деяких типів обробки помилок мені потрібен прямий доступ до транспорту, наприклад, повторне повідомлення, коли клієнт знову підключається після того, як Node WebSocket помирає .
- Виправте мене, якщо я щось помиляюсь - це засновано на помірному скануванні документації на Socket.IO.
- Faye - це просто паб / суб, він заснований на дещо складнішому протоколі та має багато вподобань:
- Розширення на стороні сервера та клієнта
- Підстановлення шаблонів підстановок на маршрутах каналів
- Автоматичне підключення, наприклад, коли WebSockets помирає або сервер переходить в офлайн-режим
- Клієнт працює у всіх браузерах, на телефонах, а на сервері - у Node та Ruby
Faye, мабуть, виглядає набагато складніше порівняно з Juggernaut, тому що Juggernaut делегує більше, наприклад, він делегує переговори про транспортування до Socket.IO та маршрутизацію повідомлень до Redis. Це обидва прекрасні рішення, але моє рішення використовувати Bayeux означає, що я повинен більше працювати.
Що стосується філософії дизайну, головна мета Faye полягає в тому, щоб вона працювала всюди, де є Інтернет, і це має бути абсолютно тривіально, щоб почати працювати. Початок роботи дуже просто, але його розширюваність означає, що його можна налаштувати досить потужними способами, наприклад, ви можете перетворити його на послугу push-сервер-клієнт (тобто зупиняйте довільних клієнтів, що підштовхують до нього), додаючи розширення аутентифікації .
Також триває робота з підвищення гнучкості на стороні сервера. Я дивлюся на те, щоб додати підтримку кластеризації та зробити підключення основного двигуна pub-sub двигуном, щоб ви могли використовувати Faye як веб-інтерфейс без громадянства для іншої паб-підсистеми, наприклад Redis або AMQP.
Я сподіваюся, що це було корисно.