Pull to refresh

Comments 25

рад что проект жив и развивается, в свое время отказался от Centrifugo в пользу Firebase ради увеличения скорости разработки… если коротко то я больше никому не порекомендую firebase и если понадобится для realtime проекта заложу выше сроки и возьму Centrifugo или аналог, в зависимости от ситуации
Cпасибо за добрые слова! Было бы интересно подробнее узнать про проблемы с Firebase, сам я с ним не работал, но вдруг придется когда-нибудь.
я использовал firebase на нескольких небольших android проектах, где в основном нужна была авторизация и realtime database, простой чат с профилями пользователей делался на ура, но на большем проекте вылезло:
очень медленно работает storage
из storage нельзя скачать сразу папку (захотите переезжать с файлами придется поиграться)
realtime работает не стабильно, да я понимаю что если бы я писал realtime сам, даже с использованием Centrifugo или чего то подобного, это не защитило бы меня от проблем с неправильно настроенным сервером, но любую проблему можно было бы решить и принять меры чтобы не повторять, в firebase приходилось просто ждать пока заработает…
нет нормальных средств администрирования

справедливости ради стоит заметить что они очень активно развиваются, сапорт работает адекватно (сам не верю гугл и сапорт, но у коллеги были проблемы с firebase в unity и ему ответили, проблему пофиксили)

Могу сказать что теперь я сильно против подобных сервисов, лучше заложить больше времени/денег но иметь полный контроль над бекендом
Ну это всегда trade-off, в общем случае, используя open-source решение (Centrifugo и т.д.) на своем бэкенде можно столкнуться с подобными же проблемами. Наверное, выбирая решение, нужно исходить из «а чего мне будет стоить от него отказаться в определенный момент».
согласен, open-sourse не панацея, но на будущее хочется больше контроля над проектом
Но всегда можно сделать форк (если срочно а в оригинальном репозитории все затягивается) и использовать в проекте его. И это реально работает. Пока ты ждешь принятия твоего MR в основном репозитории или вовсе всегда используешь свой форк синхронизируя его с основной репой.

Для конфигурации есть очень хорошая и совсем лёгкая
https://github.com/segmentio/conf/, умеет и команды и конфигурацию подтягивает как из ENV, так и из yml и из --флагов, зависимостей в ней самая малость.

Спасибо за ваш труд! Полтора года прошло с тех пор как притащил центрифугу в свой проект.
После внедрения перестала болеть голова на тему отправки событий в браузер.
Сервис из разряда «настроил и забыл».
Спасибо! На самом деле иногда все же нужно обновлять:) Например, в недавнем прошлом обнаружилось, что при нескольких подряд разрывах соединения с Redis-ом состояние подписок не восстанавливалось корректно –соответственно, сообщения могли перестать доходить до клиентов. Хорошо, что вы не столкнулись – по сути это воспроизводилось только в той инсталляции, о которой я написал в начале статьи (там очень большое количество активных каналов, на которые нужно переподписываться при реконнекте к Редису).
Я использую без redis. Мне хватает встроенных возможностей. И ещё долго будет хватать.

В то время, когда я увидел статью про портирование центрифуги на go, я страдал с собственной реализацией сервиса для передачи сообщений на nodejs. Там было всё плохо — куча частных моментов, которые я не обрабатывал и которые валили сервис. Постоянно надо было расследовать эти падения и писать патчи.

А с centrifugo всё это ушло в небытие. Настолько хорошо работает, что когда сейчас стал внедрять новый функционал, пришлось заново читать документацию, чтобы вспомнить как там всё делается.
Спасибо, FZambia, за отличный продукт, пользуемся centrifugo со старта нашего проекта. Едиственно, что мне не хватало в реализации из коробки, так это обработчика событий выхода клиентов. Это конечно решается запуском отдельного клиента на сервере, к примеру на go, который бы слушал события leave определенного канала, но на мой взгляд, это немного «из пушки» стрелять. Написать его дело пары минут, тем не менее, хотелось бы может это как встронное решение иметь. В остальном, набор фич из коробки полностью покрывает потребности нашего проекта.
Спасибо:) А отправка AJAX запроса с async: false с клиента при закрытии таба (событие onbeforeunload) не подойдет ли случаем для этой цели? Это проще чем отлавливать событие выхода на серверной стороне?
Не пойдет. Может зависнуть комп, выключится электричество, отключится интеренет и это все не будет обработано, а запись будет к примеру залочена и другие пользователи не смогут её пользоваться. Придется городить костыли на cron-e.
Да, тогда join/leave на сервере единственный выход сейчас… Как вариант можно слушать Редис на предмет join/leave сообщений — но это внутренний протокол. Оба варианта не красивые. В теории вебхуки от Centrifugo бекенду могли бы помочь – но именно этого я старался избегать — появляется связность, много запросов, дополнительная логика отправки. Так что в целом когда нужно совершать действия при дисконнекте клиента лучше Centrifugo не использовать.
Показалось к Цукербергу :)
Пользователи приложения подключаются к Центрифуге
В документации не нашел, как можно в конфиге задать порт для демона?
Да спасибо, уже сообразил :)
Еще один вопрос, настроил перед центрифугой nginx по мануалу (embed to a location of web site), при переходе на страницу центрифуги выпадает 500 ошибка в логах:
2017/04/14 11:06:35 [error] 14978#14978: *405 the rewritten URI has a zero length, client: 'тут ай пи', server: имя сервера.
Видимо нужно вот так прописывать rewrite:

rewrite ^/centrifugo(.*) /$1 break;


– не хватало /, еще судя по всему мне нужно будет адреса статики поправить, чтобы веб-интерфейс работал без дополнительной конфигурации.
Документацию обновил — теперь должно все работать, включая веб-интерфейс
Да заработало, правда теперь вопрос с CSS и JS) ну это мой косяк. Спасибо!
Хотелось бы увидеть на странице проекта больше примеров и кейсов использования. Например применимо ли это где-нибудь в в e-commerce?
Я бы обобщил — PUB/SUB для веба. Ну а так идея, конечно, не нова и конкурентов достаточно, особенно на основе NodeJS.
Only those users with full accounts are able to leave comments. Log in, please.