@Nozdryakov
Изучаю yii2, php, JS

Какой стек технологий лучше выбрать для разработки чата?

Хочу написать свою маленькую соц сеть и что-то похожее на анонимные чаты(например, такой или такой), в общем суть понятна. Итак, чего я не знаю и хочу, чтобы мне подсказали. Я знаю yii2 и что-то могу написать на нем, я написал простой интернет магазин и в принципе познакомился как связывать back и front, поэтому чтобы написать чат я за основу хочу взять фреймворк yii2, front Vue и т.к, на мой взгляд, там не будет очень много данных, я хочу взять бд mongo. Суть в том, что я не совсем понимаю работу вебсокетов, может быть кто-то писал что-то такое и может подсказать какую литературу или какие источники использовал.
Может быть сам чат никто с 0 не пишет и есть какие-то готовые решения? Насколько хорош мой выбор(yii2+vue+mongo)? Может быть стоит посмотреть на другие технологии и прежде чем начать писать что задумал , взять что-то попроще?

P.S Приложение хочу сделать с регистрацией, но не думаю, что это как-то сильно усложнит мою разработку
  • Вопрос задан
  • 290 просмотров
Решения вопроса 5
@rPman
зачем все так усложнять

рабочий чат на websocket лежит в примерах наверное любой документации к websocket, первый же нагугленный проект (бакэнд на go но там код на 20 строк все понятно) на столько простой что даже непонятно что непонятно

а еще есть webrtc, эта технология дает еще один механизм коммуникации между пользователями вообще минуя сервер, добавь сюда шифрование и failover при неработающем webrtc и получишь готовый проект
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Суть в том, что я не совсем понимаю работу вебсокетов, может быть кто-то писал что-то такое и может подсказать какую литературу или какие источники использовал.

Я думаю автору имеет смысл пройти какой-то учебный курс (желательно платный) по JS+WebSockets.
Это очень важная основа. Поэтому всякие yii2+vue+mongo не имеют никакого значение если ты не сможешь
разбираться в простейших сетевых ошибках и состояниях протокола.

Освоишь ws - делай любой чат. Ты его даже сделаешь без фреймворков.
Ответ написан
vabka
@vabka Куратор тега Веб-разработка
Суть в том, что я не совсем понимаю работу вебсокетов

Клиент отправляет на сервер 1 HTTP запрос, после которого у него остаётся на длительное время открытое двухстороннее соединение, по которому он может общаться с сервером, будто у него сырой TCP-сокет (по факту так и есть).

Подробнее можно почитать на MDN.

Может быть сам чат никто с 0 не пишет и есть какие-то готовые решения?

На самом деле подобные анонимные чаты на столько легко реализуются, что проще написать самому, чем пытаться найти готовое решение.

Насколько хорош мой выбор(yii2+vue+mongo)?

Не уверен только на счёт mongo, тк в моих глазах это очень специфичное решение, которое не везде есть смысл применять.
Если у тебя зафиксирована структура данных, и при этом у тебя нет кучи разных данных, которые хочется хранить в денормализованном виде, то реляционная СУБД будет, вероятно, и эффективнее и проще.
Возможно, mongodb будет иметь смысл, если ты захочешь работать с сотнями тысяч клиентов, и тебе нужно будет распределять данные на несколько серверов (возможно, в разных ДЦ)

yii2 - вполне ок вариант, раз у тебя уже есть опыт работы с ним. Модули для работы с вебсокетами для него есть.
Ответ написан
AgentSmith
@AgentSmith
Это мой правильный ответ на твой вопрос
Можно на сокетах, но это сложнее на бэке делать.
Проще всего простой REST-API. Но здесь придётся опрашивать сервер с некоторой периодичность, которая для тебя с твоей нагрузкой не критична
Ответ написан
Комментировать
daniel_pr
@daniel_pr
Не парьтесь. Чаты - это просто. И сам вебсокет - штука простая.

Если интересно, можете почитать вот эту статью: там рассказано, как самому, используя только http пакет в ноде принять ws-подключение и обработать/отправить сообщение
https://habr.com/ru/post/513224/

Также очень полезно почитать сам rfc о протоколе (в частности раздел 5.2, где показан сам фрейм)
https://www.rfc-editor.org/rfc/rfc6455
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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