ArtDenis
@ArtDenis
Разработчик сайтов и мобильных приложений

Нужен совет, касательно создания чата (PHP or Node)?

Всем здравствуйте!
Под конец рабочего пятничного дня, решил все-таки задать вопрос.

Есть сайт на обычном хостинге.
Есть VPS хостинг.

На сайте пытаемся создать чат, в идеале подобие slack Five Open-Source Slack Alternatives.

Но коллеги накидали вместо одного из готовых решений, свое на node.js + socket.io, пока очень примитивное, с целью с этим всем разобраться.

Весь остальной сайт (авторизация) на php + mysql.

У всех мало опыта с этим, вчера получилось залить чат на VPS, где уже настроен Apach.

Получилось, что на 80 порту у нас все как на обычном хостинге, а на 3000 порту чат.

Соответственно придется страницу с чатом писать на node.js полностью, дополнительно решать проблему с авторизацией (одно из решений ).
Но для меня более непонятно, что делать с этим 3000 портом, как сделать чтобы он отображался как обычная страница и не возникало проблем с теми, у кого этот порт закрыт? решение, в котором пока не могу разобраться

Но поют мне, что это будет костыль, так ли это?

С этими мыслями стал искать решения на php. Как понял, их два:
1) Комет сервер comet-server.ru
2) php сокеты, в которых вообще для меня пока темный лес

Наткнулся на статью Создание чата на PHP, github. Но не пойму, подходит ли это решения для нашего проекта?

Ну и собственно вопросы:
1) Правильно ли будет, что весь сайт и логика на php и mysql, а одна страница с чатом на node.js?

Если скорее да, чем нет, то:
2) Решаем ли вопрос с отличным от 80, портом?
3) Лучше использовать готовые решения (нравится lets-chat, но не понятно справимся ли мы с его кастомизацией) или писать свое?
4) Если свое (вариант неплохой, так как очень хочется разобраться в node.js), то как сообщения можно организовать с историей? Стоит ли использовать nosql для сообщений, какую? Может membercash? Как понял, сначала все хранится в Nosql или member, затем через некоторое время, кучей пишется в mysql и чистится, в общем тут мне нужна ликбез статья.

Если лучше будет написать все на php:
2) Стоит ли использовать чат со статьи Создание чата на PHP? Здесь пишется свой комет сервер?
3) Лучше сторонний комет сервер или свой?
4) Писать все в mysql, или стоит использовать nosql для сообщений, какую? Может membercash? Как понял, сначала все хранится в Nosql или member, затем через некоторое время, кучей пишется в mysql и чистится, в общем тут мне нужна ликбез статья.

Заранее спасибо за ответы, и простите за такой большой вопрос, не хватает опыта, знаний, буду рад помощи.

Другие решения, найденные из ответов на тостере:
socketo.me/docs/flow
https://github.com/btford/angular-socket-io-seed
https://github.com/kryoz/sociochat
  • Вопрос задан
  • 1822 просмотра
Пригласить эксперта
Ответы на вопрос 3
@xfg
Очень много вопросов. Отвечу только касательно порта. Nginx умеет проксировать websocket трафик.
location /wsapp/ {
    proxy_pass http://wsbackend:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Подробнее можно прочитать https://www.nginx.com/blog/websocket-nginx/
Думаю apache и другие это тоже умеют, но конкретнее сказать не могу, так как не использую их.
Ответ написан
Комментировать
@carroll
Меняй порт Apache на любой другой: /etc/apache2/ports.conf
Открой файл JS сервера на ноде через редактор и найди там server.listen( ... 3000 ... );
Где многоточия - сам понимаешь, может быть все. Меняй этот порт и перезагружай ноду и апач.
Profit
Ответ написан
Комментировать
Статья на хабре, как сделать вебсокеты на пхп: https://habrahabr.ru/post/209864/
Готовая библиотека: https://github.com/morozovsk/websocket (там же есть примеры и демки чатов и игр)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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