2014-01-18 3 views
2

КОНТЕКСТВеб-приложение в реальном времени: socket.io ИЛИ размещенные данные/обмен сообщениями?

App: Single-страницы в режиме реального времени веб-приложение

Функциональность:

  • Пользователь манипулирует виджетов на приложение, виджет данные, отправляемые на сервер
  • сервер вычисляет с помощью рабочего потока & отправляет данные обратно в приложение

Связь:

  • Тип: В настоящий момент только приложение < -> сервер.
  • Потребует паб/суб в будущем
  • Размер: JSON несколько кБ на обновление либо образом
  • Частота: 1-10 обновлений в минуту

пиковая нагрузка: Несколько сотен одновременно работающих пользователей (но, конечно,)

Разработчик компетенции: маггловская


ПОДХОДЫ

1) Наивный подход: Хостинг node.js + экспресс + socket.io

У меня есть песочница работает нормально с наивным подходом, но я чувствую, как Toonces Движущей Cat (я сказал вам, что он мог ездить! Просто не очень хорошо!). У меня есть шлем для csp, xframe, xss и т. Д., Но мой код socket.io очень простой, никаких специальных обработчиков событий или дросселирования трафика.

2) Альтернативный подход: Хостинг node.js + Хостинг в режиме реального время службы данных/сообщения

Expectation здесь является то, что служба размещаемых данных в режиме реального времени/обмена сообщений является надежной и может масштабироваться для движения, кроме от обработки таких проблем, как DoS и безопасный транспорт. Хост-приложение node.js будет обслуживать статические файлы за CDN, поэтому в основном это касается потоков данных и рабочих потоков в реальном времени. Приложение node.js не будет напрямую смотреть на пользователей веб-приложений.


ВОПРОС

Вы порекомендуете подход # 2, как очевидно, выше и стоит дополнительных затрат?

Любые другие комментарии/предложения приветствуются.

ответ

2

Немного поздно на вечеринку здесь, но я думаю, что это может быть полезно и для других. По сути, вы должны оценить свою способность управлять стеком, лежащим в основе веб-приложения в реальном времени, то есть вы можете настроить все компоненты - socket.io, express, node и сохранить их?

Вы можете сделать вашу жизнь проще, перейдя с каркасом, который немного упростит ситуацию. Метеор (https://www.meteor.com/) - отличный пример, который позволит вам больше сосредоточиться на коде. Вы все еще нуждаетесь в некоторых знаниях для развертывания Meteor, но для этого потребуется часть рабочей нагрузки.

В крайнем конце вы можете найти полностью размещенную инфраструктуру, такую ​​как Sync Ninja (http://www.syncninja.com/), которая позволит вам иметь дело только с вашим кодом.

Исходя из опыта, стоит начать с размещенных решений, когда вы только начинаете, потому что можете сосредоточиться на создании своего приложения, а не на управлении внутренним концом.

Отказ от ответственности: Я работал над Sync Ninja.

Смежные вопросы