После того, как я покинул свои проекты в связи с уходом из Уссури-Телесервис, потребовалась небольшая пауза, что бы определить вектор моих дальнейших планов помимо основной работы.
Спустя полтора года, в связи с моей любовью к программированию высоко-нагруженных сервисов и автомобилям, я наконец-то решил реализовать то, что давно витает в воздухе, но планы раскрывать пока не буду.
А поскольку половину моего времени занимает работа над NDA-проектом, а другую – разработка собственного сервиса, я буду делиться своими собственными открытыми наработками.
На данный момент я использовал:
- React-Redux (Frontend)
- PHP с самописным модулем кэширования (на бэкенде)
- Node (сервер для сокетов)
- БД (MySQL) – в будущем переключусь на PostreSQL если будет проседать.
- Go Lang – Скрипты для парсинга данных с внешних источников.
Сейчас мессенджер умеет диалоги юзер-юзер, юзер-группа.
Важно понимать что это технический дизайн, настоящий дизайн еще не подъехал.
Так-же готова регистрация и авторизация.
Т.к мой сервис предполагает обязательное взаимодействие с телефонными номерами пользователей, я решил определить телефонный номер в качестве авторизационной информации при регистрации. Пользователю высылается СМС с подтверждением кода, после чего происходит регистрация со сверкой кода. Полтора года не пользовался смс-шлюзом. Оказалось что правила отправки СМС ужесточились. Выручает мое ООО.
Мессенджер в стадии альфы обошелся мне в 1k+ строк когда и два дня выходных. А еще я прикупил бейсболку, что бы прохожие не видели мои красные глаза от лютого оверворка. 🙂
Техническая спецификация.
Общение socket-сервера с базой данных происходит по средствам http запросов в API. Сам сервер сокетов к базе не подключается.
- При подключении к socket-серверу передается токен, который был сгенерирован для пользователя при успешной авторизации на сервисе.
- На socket-сервере присходит handshake по токену. А именно – сверяется присланный токен с доступными открытыми сессиями в системе. Если все ок, сеанс на socket-сервере попадает в массив socket-сессий данного юзера. Сеансов у юзера может быть множество – вкладки в браузере, приложение в смартфоне и т.д.
- Если имеются группы, то клиент подписывается на групповые каналы (комнаты).
- Всем клиентам, относящимся к авторизованному юзеру отсылается сокет-оповещение, о том что их друг появился в онлайне, или на оборот.
Далее сеанс будет использован для живых данных: “Вася набирает сообщение”, “Джон только что посетил ваш профиль”, и т.п. Он же будет подниматься с мобильного приложения в фоне.