Чат в тяжелом проекте на symfony (в любом тяжелом бэкенд-движке) — как?

Есть большой преимущественно контентный проект на любом тяжелом бэкенд-движке (symfony, RoR, Django и т.п.). Для определенности, пусть это будет symfony (стек РНР+Mysql+Nginx).



Задача: сделать в одном из подразделов сайта чат. Насколько я понимаю, для этих задач хорошо подходит Node.Js. С Node.JS я знаком плохо.



Вопросы:

1. Оправдано ли использование этих двух технологий одновременно в одном проекте?

2. Разумно ли выглядит идея делать сервер чата на РНР+symfony?

3. Если использовать Node.JS как сервер чата, то как реализовать одновременную аутентификацию пользователей в РHP-части проекта и Node.JS-части?

4. MySQL — разумно ли его использовать как СУБД для чат-сообщений? Или лучше что-то другое? Если другое, то как связать его с имеющейся базой в MySQL?
  • Вопрос задан
  • 6766 просмотров
Решения вопроса 1
@rozhik
1. Да
2. Нет. Если Вам нужен качественный, быстрый, и лёгкий чат. И «Да», если вам не важны эти характеристики.
3. Я бы порекомендовал 2 фазную авторизацию. Когда на чат сервере — своя сессия. И он у симфонии (или наоборот) через RPC подвязывается сессия к пользователю.
4. Лучше сообщения держать в памяти чат сервера. Если вам нужны логи, или модэрация — то сообщения можно выгружать в Мускуль. Но читать их от туда (кроме случая с стартом чат сервера) смысла нет совершенно.

P.S. Примеров чат серверов и на longPooling, и на webSocket на node.js много. RPC реализаций — тоже. Прикрутить чат — дело пары часов (Вместе с кроссаутентификацией итп)
Ответ написан
Пригласить эксперта
Ответы на вопрос 7
JekaRu
@JekaRu
Если выберите PHP, посмотрите на это socketo.me/
Иметь одну технологию вместо двух, все же бывает оправдано.
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
1) Node.js идеально подходит для подобных целей, так что я считаю что оправдано. Тем более что готовых реализаций полно.
2) Все зависит от загрузки. Что бы сделать нормальный чат, вам придется писать его с применением websokets или long-pooling. в любом случае выйгрыш не на стороне php. Только если применять всякие экстеншены для распаралеливания, писать демон и т.д. Намного проще поднять сервер на Node.js (даже с учетом что вы не так сильны в этом). Да и написать надежный сервер на PHP это то еще приключение.
3) stackoverflow.com/questions/5741792/node-js-chat-user-authentication
4) опять же проблем особо нету. Правда все зависит от реализации.
Ответ написан
Комментировать
hell0w0rd
@hell0w0rd
Просто разработчик
1. Почему бы и нет
2. Смотря что за чат. Если нагрузка не большая, на обычных ajax-запросах/long-pooling
3. В симфони сессии хранятся где угодно, по умолчанию в файлах. Домен один — кука одна. Осталось продублировать механизм их получения.
4. Тут я вам ничего особо не подскажу, но мне кажется если на сообщения не вешать индекс, а только внешние ключи на отправителя/получателя — все будет ок

Берите не то что модно, а то что знаете;)
Ответ написан
@Levhav
Возьмусь за разработку проектов любой сложности.
Для организации чатов и других видов push уведомлений лучше использовать комет сервер.
Вы можете поставить себе вот сравнение cometdaily.com/maturity.html
Или можете воспользоватся Saas решениями

www.gamooga.com/pricing/
www.tambur.io/pricing
pusher.com/pricing
www.hydna.com/plans-and-pricing/
comet-server.ru/раздел/10
Ответ написан
Комментировать
@kolesnevg
Рекомендую взглянуть на модуль nginx-push-stream-module
Ответ написан
Комментировать
@frantic
Делайте чат на Nodejs. Реализовать бету можно за день. Используйте socket.io.
Вот простой пример:
www.itlessons.info/nodejs/chat-with-nodejs-and-socket-io-with-auth/

Использую socket.io в 2 проектах. В каждом примерно 200-500 онлайн. Тормозов нет.
Ответ написан
Комментировать
@res_johnson
Полностью интегрированные облачные решения Resulticks обеспечивают измеримые бизнес-результаты благодаря измеримым коммуникациям в режиме реального времени. Приходите к нам прямо сейчас, чтобы удовлетворить свои потребности в омниканальном маркетинге!
Многоканальный маркетинг
Маркетинговое облако Resulticks
Многоканальная архитектура платформы
Платформа искусственного интеллекта и машинного об...
Маркетинговые решения Smart Link
Запросить встречу
Я не знаком ни с одним из вышеперечисленных вариантов, но хотел бы порекомендовать тот, который соответствует вашим потребностям.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы