Веб-библиотеки в реальном времени - замените hookbox на socket.io или как? - PullRequest
8 голосов
/ 17 июля 2011

У меня есть пара проектов, которые были построены с использованием ловушки для управления передачей сообщений в реальном времени между веб-клиентами и серверами. Hookbox был великолепен - он полностью абстрагировал транспортный уровень, предоставляя простой интерфейс публикации / подписки по различным каналам с элегантной системой безопасности.

К сожалению, проект хукбоксера быстро пришел в упадок из-за нежелания первоначального сопровождающего даже приложить усилия для передачи права собственности. (Grrr!) Так что трудно считать его жизнеспособной платформой.

Что такое хорошая платформа для обеспечения связи в режиме реального времени с веб-приложениями? Требования:

  • Работает, кажется, кросс-браузер, используя веб-сокеты HTML5 или COMET, как доступно. Выбор транспорта должен быть невидим для уровня приложения. Мне плевать на древние браузеры (IE6)
  • Клиентский доступ как из javascript, так и из серверных систем (т. Е. В php / python / ruby) - это очень важно
  • Предоставляет метафору публикации / подписки с произвольной полезной нагрузкой
  • Позволяет клиентам видеть, какие другие клиенты подключены к каналу, то есть присутствие
  • Детальное управление доступом через обратные вызовы к любому веб-приложению (приятно иметь)

Я слышал, что socket.io может кое-что из этого сделать, но я чувствую, что он находится на нижнем уровне стека. Может ли он подключаться к библиотекам без javascript? Аут ли?

Ответы [ 3 ]

3 голосов
/ 01 сентября 2011

У меня был очень хороший опыт использования NodeJS и Socket.IO за последние 8 месяцев.Компонент серверной части для меня был очень стабильным - я могу оставить его работающим с очень большим объемом сообщений, и его резидентная память никогда не будет превышать 20 МБ.До сих пор я смог оставить его включенным только на 4 недели без остановки сервера, но это было только потому, что мне нужно было обновить мой код на стороне сервера.

Работает, кажется, кросс-браузер, используя веб-сокеты HTML5 или COMET, как доступно.Выбор транспорта должен быть невидим для уровня приложения.Меня не волнуют древние браузеры (IE6)

Обеспечивает метафору публикации / подписки с произвольными полезными нагрузками

Socket.IO также является фантастическим программным обеспечением.Он находится в активной разработке и имеет простую абстракцию стиля pub / sub, встроенную с использованием семантики EventEmitter (NodeJS) 'on' (подписка) и 'emit' (публикация).Это также очень прозрачно на стороне клиента относительно используемого транспорта.Я использовал его в первую очередь для прямой поддержки WebSocket, но он может вернуться к сокетам на основе Flash, xhr-опросу и опросу jsonp.

Клиентский доступ как из систем javascript, так и из систем на стороне сервера (например, в php / python / ruby) - это очень важно

NodeJS - это JavaScript, работающий на V8двигатель.Он имеет массу сторонних модулей , которые обеспечивают приятные абстракции, а также, среди прочего, взаимодействие с внешними компонентами, такими как базы данных или очереди сообщений.Что касается попадания в систему с помощью php / python / ruby, это будет работать так же, как и при работе с любым другим сервером.Выберите ваш способ связи (базовый TCP / IP, или, возможно, HTTP POST или GET, или даже через файловую систему), и NodeJS на самом деле не волнует, кто предоставляет данные.Лично я реализовал клиент C #, который отлично работает.

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

Это не 'у него нет встроенной логики присутствия, хотя встроенная логика pub / sub уже есть в Socket.IO, все, что вам нужно сделать, это сохранить состояние на сервере, чтобы новые клиенты могли получить существующее присутствиеданные.Я реализовал свой собственный базовый pub / sub на сервере, который сохраняет состояние, и все вместе (включая код сервера NodeJS и базовые заглушки Socket.IO) было всего 50 строк JavaScript (включая пробелы).

Детальное управление доступом через обратные вызовы к любому веб-приложению (приятно иметь)

Не совсем понятно, что вы подразумеваете под «Детальное управление доступом через обратные вызовы к любому веб-приложению (хорошо бы иметь)'.Метафора pub / sub event / наблюдателя, которую они используют, использует обратные вызовы, так что вы привязываете определенные действия к определенным событиям.

Do auth?

У меня нет необходимости,тем не менее, чтобы сделать какой-либо аутентификации для наших систем, поэтому я не могу говорить с ним напрямую.Однако, просматривая модули NodeJS, вы заметите, что доступно множество модулей авторизации, в том числе LDAP и OAuth, не говоря уже о один модуль , который заявляет, что он поддерживает "OpenId, Google, OAuth, Twitter, LinkedIn,Yahoo, удобочитаемость, Dropbox, Justin.tv, Vimeo, Tumblr, OAuth2, Facebook, GitHub, Instagram, Foursquare, Box.net, LDAP "

2 голосов
/ 02 сентября 2011

Хотя я еще не пробовал, я начал изучать Pusher для записи Node Knockout 2011. В дополнение к JavaScript он поддерживает следующие не-js клиенты:

  • Objective-C
  • ActionScript
  • .NET & Silverlight
  • рубин
  • Arduino

Если возможен обмен сообщениями от третьих лиц, вы можете бесплатно воспользоваться этой услугой с помощью плана «Песочница» (20 подключений и до 100 000 сообщений в день) и посмотреть, соответствует ли он вашим потребностям. (Я немного сомневаюсь в требовании «присутствия», хотя оно может быть рассмотрено в документации.)

0 голосов
/ 03 сентября 2011

Я рекомендую использовать node.js , в котором есть множество библиотек для разных вещей.Одна библиотека для обмена сообщениями в реальном времени - now.js .У меня нет большого опыта в этом, но я попробовал это, и я бы сказал, что это сработало хорошо и имеет все, что вы сказали, что вам нужно.

...