Идея для плагина - моментальные уведомления
Идея не нова, но как уже где то сказали — хорошие художники копируют)
Суть — пока пользователь находится на сайте, уведомлять его о всех связанных с ним событиях мгновенными всплывающими сообщениями. Кто зареган вконтакте, прекрасно поймет, насколько это удобно.
Предлагаю отслеживать такие событий:
— Новое письмо
— Новый ответ к личному сообщению
— Ответ на комментарий пользователя
— Комментарии к топику пользователя
— Новые комментарии в подписанном топике (давно не хватает такой функции блин, элементарно же! Сделать кнопку «подписаться» и слать уведомления о ВСЕХ новых комментах к топику. Топик теряется в потоке информации, и каждый раз искать его в эфире, или даже в избранном, где у меня более 150 топиков… мягко говоря, неудобно.)
Вообщем, как я это вижу. При голосовании мы видим зеленое сообщение в углу экрана, реализовать максимально похоже, ну или с небольшими отклонениями. Каждое уведомление являет собой ссылку на комментарий, или личное сообщение, и т.д. Уведомление не закрывается само по себе, поэтому добавить кнопку «закрыть». И еще одно — при переходе на целевой коммент или топик, все другие уведомления остаются на вновь загруженной странице. Исчезает только то, на которое мы кликнули.
Вот, набросал для наглядности.
Суть — пока пользователь находится на сайте, уведомлять его о всех связанных с ним событиях мгновенными всплывающими сообщениями. Кто зареган вконтакте, прекрасно поймет, насколько это удобно.
Предлагаю отслеживать такие событий:
— Новое письмо
— Новый ответ к личному сообщению
— Ответ на комментарий пользователя
— Комментарии к топику пользователя
— Новые комментарии в подписанном топике (давно не хватает такой функции блин, элементарно же! Сделать кнопку «подписаться» и слать уведомления о ВСЕХ новых комментах к топику. Топик теряется в потоке информации, и каждый раз искать его в эфире, или даже в избранном, где у меня более 150 топиков… мягко говоря, неудобно.)
Вообщем, как я это вижу. При голосовании мы видим зеленое сообщение в углу экрана, реализовать максимально похоже, ну или с небольшими отклонениями. Каждое уведомление являет собой ссылку на комментарий, или личное сообщение, и т.д. Уведомление не закрывается само по себе, поэтому добавить кнопку «закрыть». И еще одно — при переходе на целевой коммент или топик, все другие уведомления остаются на вновь загруженной странице. Исчезает только то, на которое мы кликнули.
Вот, набросал для наглядности.
64 комментария
Если есть вопросы или критика по поводу моих мыслей и мнений прошу отписаться.
Встал вопрос много ли народу имеет VPS/VDS, так же самостоятельно сможет установить ноду?
Создал голосование.
Например вынести это как настройку в плагине между VPS/VDS(стандартный интервал пинга) и обычным хостинг-аккаунтом(интервал времени и список).
Node.js это событийно-ориентированнный и что важно заметить сервер! Такой же как apache под которым крутиться php модуль, благодаря которому и работает наш любимый livestreet. Node.js выдерживает тысячи и более подключений и именно он отдает нам эти самые уведомления. А livestreet и php в моей реализации всего лишь при происхождение нужных событий(новое письмо, новый комментарий) передают параметры с именами и текстами в очередь сообщений node.js
За это время все переписано с нуля и упрощено.
В итоге имеем следующие вещи:
связь php и node.js через unix-socket, и это очень здравое и полезное решение; используем либу socket.io, что гарантирует нам охват всех пользователей от самых древних браузеров до современных с использование вебсокетов. Т.е сейчас например пользователь хрома практически моментально получит уведомление о сообщении.
Реализовано все что указано в топике(кроме подписки на комментарии топика) + остальные уведомления которые так же имеют место быть.
Прилагаю скрин:
demo есть? потестировать
Переписывается архитектура на более гибкую и расширяемую, что бы в будущем докачивать новый функционал, создается документация по установке, делается инсталлятор.
Помимо уведомлений теперь имеется подгрузка комментариев.
Дальше больше, но сейчас приоритет создать гибкую архитектуру node.js сервера для будущего дополнения livestreet'a real-time решениями.
установка быстрая, работает с апаче и т.д.
Да впринципе любой способ хорош и будет работать, вся речь о нагрузках которые они создают и сколько клиентов готовы выдержать. php в этом не силен несмотря на всевозможные примочки.
Node.js работает хорошо даже на впсках бюджетного уровня и будет держать большее количество клиентов чем любой realplextor. Да и по сути самый производительный вариант это писать на Erlang.
Я думаю тут на каждом варианте можно поиграть.
Во-первых node.js это всего лишь фреймворк, даже не технология, и все что можно делать на нем можно сделать и без него.
Во-вторых вконтакте не использовали node.js у себя, о чем упоминали на своем последнем докладе на highload (очень, кстати, волновавший участников конференции вопрос был)
# node.js — прослойка для реализации XMPP, живет за HAProxy
Вот статья на тему архитектуры вконтакте: www.insight-it.ru/masshtabiruemost/arkhitektura-vkontakte/
Хотя статья уже старовата, и возможно сейчас что-то поменялось…
Я к тому, что мне интересно откуда выросло утверждение, что для простых оповещений нужно использовать Node.js
А что предлагаете Вы использовать для реализации простых оповещений?
Node.js конечно же фреймворк работающий под v8, но в савокупности при установке получается именно сервер.
Реализовать такое можно, как я и сказал выше, но серьезных проектов вы не получите. Для хостингов можно сделать плагин и netlanc уже сделал, поэтому какой смысл трогать эту нишу?
Варианты реализации я прекрасно знаю: php+memcached, создать демоны на php, nginx, cgi, python.
Но нода на мой взгляд самое лучше в этом плане решение. Но сможете ли вы все это сделать в скорлупке хостинга? Нет, поэтому смысл дискуссии?
Comet, WebSocket'ы это все хорошо и _правильно_, но проблемы надо решать по мере их поступления. В случае возникновения проблем из-за реализации на php с демоном нужно делать с использованием вышеназваных технологий, но… какая нужная нагрузка, чтобы вышеназыванный средний VPS начал загибаться под такой нагрузкой? Человек 500 онлайна как минимум, есть у кого-то здесь такой проект на LS?
А про тормоз так о том и речь, чтоб серверная часть была написана на ноде или на эрланге.
И это действительная интересная разработка, но очень сложная для паблика и рядовых пользователей, не смотря на инсталляторы идущие в комплекте.
Подробнее о плагине в топике livestreet.ru/blog/addons/13630.html