У меня был очень хороший опыт использования 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 "