Как сделать свой корпоративный WhatsAPP (SocketJS)?

Доброго времени суток! Для предприятия, в котором я сейчас работаю, необходимо написать программу аля WhatsApp. Т.к. я не силён в других языках программирования, а знаю только основы PHP/SQL и JS было решено написать на них. В качестве Backend возьму Laravel (для API), а на frontend хочу взять VueJS (ElectronJS).

И тут сразу задаюсь вопросом о передаче сообщений от клиента клиенту (клиентам). Т.е. функционал будет очень похож на WhatsApp (передача текстовых, аудио-видео файлов и т.п.). Прочитав пару статей я понял, что лучше для этого использовать соккеты (JS). Но тут появляются ещё вопросы, на которые я и хотел бы получить ответы:

1. Какие мощностя нужны соккет-серверу для поддержанию 100 одновременных пользователей (имеется ввиду отправка сообщений/файлов одновременно 100 человек).
2. Сложно ли сделать будет так называемые "комнаты"? Если будет ссылочка по этой теме, то будет здорово.
3. Как привязать Laravel (API) для работы с соккетами? Нужно получать данные пользователя, права и т.п.
4. Сложно ли будет масштабировать сеть? Да, знаю, о масштабировании ещё рано говорить, но нужно знать сразу.
5. Как сделать правильно сохранение сообщений пользователей в БД (MySQL)?
6. Есть ли тут какие-то подводные камни?

PS: Данное творение франкинштейна будет работать по интернету.

Прошу сразу - пожалуйста, не стоит писать что-то типо "Ты не сможешь", "Учи языки" и т.п. Т.к. выбора у меня нет - сказали сделать - значит нужно делать (и не спрашивайте почему...).
Заранее спасибо за ваши комментарии и ответы!
  • Вопрос задан
  • 643 просмотра
Пригласить эксперта
Ответы на вопрос 2
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Не думали просто поднять поднять свой matrix сервер для riot.im?
https://gist.github.com/attacus/cb5c8a53380ca755b1...
Ответ написан
@grinat
https://reactphp.org/
Проблемы будут с демонами, в общем суть в том что надо отдельно подымать процесс на php который будет слушать сокет и отправлять ответ, php для этого слабо подходит, будет падать и т.п. тут спасет supervisord

Но не советую вообще с этим связываться, рекомендую: https://github.com/centrifugal/centrifugo там сервер на go, и уже готовые библиотеки для js, все что тебе нужно идет из коробки.

И получать все через сокеты смысла нет. По факту их есть смысл использовать только для для доставки сообщений/статусов, а создавать фото/комнаты/новый сообщения через rest api. Ну то есть человек создал сообщений, оно ушло в restapi, в restapi сохраянем в бд и шлем сообщение например в centrifugo чтобы она через сокет разослала это сообщение всем заинтересованным получателям. Если будешь слать все через сокеты, то получиш кучу гемморая. Если все черз сокеты, то лучше уж брать сразу apolo в связке с graphql либо meteor
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы