[Open Source] Решение - «Realtime»


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

Вместо пиара
Вконтакте, одноклассники, фэйсбук, твиттер, гугл уже давно используют силу обновлений в реальном времени, создав своим пользователям комфортные условия для общения

Что это
Это инструмент для вас, вашего сайта, разработчиков, позволяющее создавать свои real-time дополнения для livestreet'a. Он состоит из node.js сервера и плагина для livestreet.

Сервер realtime берет на себя роль связующего звена между пользователем и livestreet'ом, который передает серверу данные при наступления запланированного события.

В базовую комплектацию входят:
  • Моментальные уведомления о событиях:
    — новом топике в блоге на который вы подписаны,
    — новом комментарии в вашем топике,
    — ответе на комментарий,
    — новом личном сообщении,
    — ответе на личное сообщение,
    — добавлении вас в друзья
  • Моментальная подгрузка комментариев и личных сообщений для авторизированных пользователей


Цели
Предоставить функционал перечисленный выше, создающий на вашем сайте ощущение вовлечения во все происходящие на сайте события, вплоть до новых комментариев к статьям и личной переписке. Помимо этого дать инструмент для разработчиков неравнодушных к real-time технологиям.


Для разработчиков и мечтателей
Теперь вы ничем не ограничены и можете создавать чаты, следить за событиями, мониторить пользователей, возможно писать игры, уведомлять об изменениях, подгружать новости и многое другое.

Плагин открыт и не обновлялся с появления livestreet 1.*, поэтому всех желающих приглашаю на его модификацию и допиливание.

Скачать Realtime для LiveStreet 5.1

P.S Автор не обещает оперативную поддержку и стабильную работу.

32 комментария

avatar
Скачать Realtime для LiveStreet 5.1
0.
avatar
Огромное спасибо! Великолепная новость.
avatar
Я давно следил за вашим решением по данному вопросу, почти год как)
Вам большое спасибо)
avatar
А вот это уже интересно, вот на это можно коллективные сборы денежных средств устраивать, а не на шаблоны
avatar
+1
avatar
Уважаемый ТС, ваш плагин очень заинтриговал, но хотелось бы знать больше о принципе работы, и насчет совместимости с первой версией ЛС.
avatar
В топике все написано. Можно так же почитать его предысторию.

Под 1.* работать он не будет в виду использования различной верстки и js кода. php часть тоже в 1.* улучшилась и упростила задачи для плагина, но все доработка оставлю для умов заинтересованных и желающих продвинуть данное решение вперед с помощью коммитов.
avatar
кто поставил себе, хотелось бы глянуть как работает
  • wweb
  • 0
avatar
главное чтобы идею не перетащили на коммерческий плагин
avatar
главное это заставить работать, чего лично у меня пока не получилось. Собственно оно только интереснее от этого =)
avatar
Access-Control-Allow-Origin остался непобежденным. Если вдруг кто одолел, поделитесь ссылкой пожалуйста
avatar
Возможно что то из этого вам поможет. Честно говоря я уже не помню как справлялся с этой проблемой, но она была.
avatar
avatar
это я все пробовал, может что не так делаю, а может не работает, буду продолжать искать решение. Если удастся победить напишу
avatar
я адекватный и лояльно отношусь к конкуренции, если вдруг и появиться возможно это будет хорошим стимулом все таки вернуться к разработке. но что бы сделать подобный продукт придется написать весь код с нуля, что не каждому под силу и как правило проще использовать открытый продукт занимаясь его расширением и улучшением.
avatar
в classes/lib/logger.js у filename нужно прописать полный путь до места с логами. Иначе демон не стартует
new (winston.transports.File) ({
            filename: '/home/xxx/server/logs/' + dateFormat(now,'isoDate') + '.log',
            maxsize: 20*1024*1024,
            timestamp: true,
            json: false
            //handleExceptions: true
        })
avatar
а на отсутствие модуля «winston» не материлось?
avatar
если материться то
npm install winston
решит проблему
avatar
надо правда это сделать из директории, где оно рекваерится.
avatar
так если поставить модуль, то и не будет =)

Я все бодаюсь с Access-Control-Allow-Origin, дошел до «Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true»
avatar
появление комментария онлайн это супер круто. Т.е. читаешь комментарии к топику, а новые прям на лету появляются.

Я таки завел =)
avatar
Очень радостная новость :) надеюсь на тикеты на github, ну и вообще по возможности и при желании в улучшении этого плагина :)
avatar
первым делом надо с языковым файлом будет разобраться и app.js (привести в соответствие для 1.0 и понять зачем там переопределения). В общем постепенно начнем развивать =)
avatar
читаешь комментарии к топику, а новые прям на лету появляются.
страница при этом не дергается?
avatar
если комментарий ниже, то нет, а вот если выше то опускается на высоту комментария
avatar
Большое спасибо!
еще не ставил, но просмотрел сделанный вами мануал — от него стало тепло на сердце :)
avatar
Тоже пришел к нашей «любимой» ошибке :)

В консольке Google Chorme:
XMLHttpRequest cannot load 127.0.0.1:8003/socket.io/1/?t=1356435296139. Origin test.net is not allowed by Access-Control-Allow-Origin.

В логе nodejs приложения:
warn — origin missing from handshake, yet required by config


Хинт тем кто будет ставить:
Отключайте сжатие JS файлов
$config['compress']['js']['merge'] = false;
$config['compress']['js']['use'] = false;
Без этого дело даже до ошибки «not allowed by Access-Control-Allow-Origin» не доходит т.к. крешится раньше.

Если запускать nodejs приложение под Windows:
1. В конфигах сервера и плагина указывайте порт вместо unix-сокета.
2. При установке «npm install socket.io» понадобится Microsoft Visual studio 2008 express (на всякий пожарный и «Microsoft Windows SDK for Windows Server 2008 and .NET Framework 3.5») и вот это code.google.com/p/msinttypes/ т.к. к моему удивлению, и не только моему, stdint.h в Visual studio 2008 (и выше) нет.
Можно чуть форсировать установку и прежде чем ставить «socket.io» поставить «ws» (именно ему и нужна пересборка под платформу), а после уже ставить «socket.io».
  • xRay
  • 0
avatar
как по нормальному исправить ошибку я пока не нашел, подправил код node.js =)

server/node_modules/socket.io/lib/manager.js определеил жестко origin
примерно в 779 строке добавил
origin ="http://your_domain.com";

это нужно добавить перед проверкой
if (origin) {
    // https://developer.mozilla.org/En/HTTP_Access_Control
    headers['Access-Control-Allow-Origin'] = origin;
    headers['Access-Control-Allow-Credentials'] = 'true';
  }

Нужно разобраться откуда там origin должен браться и почему не приходит, но времени пока на это нет.
avatar
Хм походу не приходят эти заголовки от браузера. Потому и отлуп дает.
Можно для теста в plugins/realtime/lib/js/client.js пульнуть заголовками этими.

Вот тут мужик с этим же «Access-Control-Allow-Origin» долбался benbuckman.net/tech/12/04/cracking-cross-domainallow-origin-nut
avatar
avatar
Прописал тоже самое ошибка больше не возникает, но уведомления не приходят. А у вас как?
avatar
скажем так, уведомления не всегда всплывают (закономерности пока не нашел), но теже комментарии на лету появляются, так что система то работает.
До НГ у меня решительно нет возможности более детально разобраться (ремонт, переезд да и работа зло). Если у вас получится, выкладывайте изменения на github
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.