Кое-кто меня спрашивал

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

Как работает чат? Он работает по архитектуре клиент-сервер.
То есть клиент (приложение андроид) отправляет запрос серверу, тот его обрабатывает и посылает запросы определенным клиентам. Изначально, сервер был написан Лоти на JavaScript, но он был настолько безобразен, что даже копия названия комнаты ломала сервер, не говоря уже об API. API — некий интерфейс, определенная структура запроса, которая передается серверу. На скриншоте показан примерный запрос, который клиент посылал серверу.

Когда я начал переписывать сервер, столкнулся с такой проблемой, как незнание текущей структуры API. Лоти мне скинул таблицу excel, в которой расписывалось, какую именно структуру запроса клиент должен был получать. И документация, которую скинул он, была ужасная, неполная, я ее не мог понять. Поэтому иногда приходилось писать Васе, т.к. он писал клиент андроид для чата.

Вторая моя проблема — незнание языка программирования на котором писал. Я решил выбрать язык GoLang, потому что он для серверов прям золотце.

Но за месяц я стал более или менее работать с ним, написав и сам прототип сервера.

3 проблема — особенности языка. В нем есть удобная вещь, как каналы. мне было трудно их сразу понять. помимо этих каналов, были и другие проблемы: мне пришлось переписывать со старой библиотеки сокетов на новую. веб сокет — это протокол, предназначенный для обмена сообщениями между клиентом и сервером. Если слышали про HTTP и HTTPS, то web socket — их прародитель. Далее была проблема с базой данной и ORM. База данных (далее БД) — программное обеспечение, которое помогает хранить данные в виде таблицы. Использовалась Maria DB (MySQL), от Oracle. В нем мы хранили список пользователей, уровень админки, сообщения и данные комнат. Следующая проблема — ORM (object-relational mapping, объектно-реляционное отображение) — технология программирования, которая связывает базы данных с концепциями ООП. Проще говоря, у БД есть свой язык, который называется SQL. Но систем управления БД очень много: mysql, nosql, sqlite, postgressql и т.п. И у некоторых иногда синтаксис немного отличается от других. Чтобы каждый раз не менять, если выбираем другую систему управления БД, на помощь приходит как раз ORM.

Интересная статья:  виртуальные сервера mail.ru

ООП — объектно-ориентированное программирование методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса, а классы образуют иерархию наследования. Грубо говоря: помогает разрабатывать программы, считая определенные типы, как объекты; к примеру, класс машина — это объект, она имеет свою атрибутика. в нее входят подклассы: колеса, каркас, стекла, руль, двигатель и т.п. И все они как-то взаимосвязаны. но каждый из них — это отдельный объект. ORM использовал от автора jinzhu.

4 проблема — необходимо как-то было хранить старые данные и новые. т.к. мой сервер имел немного другую структуру, намного лучше, чем на тот момент у Лоти.

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

6 проблема — не было нормальных тестов. Функции, которые есть у сервера, должны быть как-то протестированы. Поскольку клиент был только на андроиде, мне приходилось то на пк сидеть, то идти на телефоне что-то делать, а на пк искать ошибки.

7 проблема — нет доступа. Мой сервер, как и Лоти, держались на виртуальном сервере, который арендует он сам. К той виртуалке имел доступ только Лоти. и ждать, пока он скажет какая ошибка сломала сервер — требуется время.

8 ошибка — проблема при переносе с одной операционной системы на другую. Сам сервер я писал на операционной системе Windows, Лоти держал на семействе Linux. И кое-где у нас были конфликты, несмотря на то, что язык GoLang являлся кроссплатформенным. То есть работает на разных ОС.

Исходный код проектов:

Мой сервер:
Сервер Лоти:
Клиент Android Васи:

Интересная статья:  виртуальные сервера

Прототип моего нового сервера, в котором с Васей собирались использовать REST и HTTP в качестве запросов к серверу:
Каркас нового клиента Васи на Android, но уже на Kotlin, а не Java:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *