3

Архитектура браузерного клиента

часть 1
часть 2

Разработка идет своим ходом, однако поток новой информации уже не такой сильный. Больше времени уходит на анализ имеющегося, разбор деталей и построение концепций, перенос кода на новые концепции (например, последним серьезным изменением был перенос "движка" с FIFO из массивов на события, на коих строится большая часть работы JS)

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

Сам движок чата "зашифрован" в chatwss.js
Оранжевым и сиреневым отмечены модули графического интерфейса.

Архитектура

Делая своего клиента для чата, я сначал хотел переиначить "под себя" архитектуру сервиса, но с каждой новой попыткой ввести что-то новое понимал, что автор сего творения уже предложил весьма неплохую, мне надо только вклиниться в нее.

Примерно так работает веб-клиент чата (андроид-клиента я не разбирал, но, думаю, примерно так же устроен и он):

Пользователь  работает с GUI, нажимает кнопочки, набирает сообщения. На кнопках висят события, которые, как правило, дают задания ChatEngine.


ChatEngine  в свою очередь является подобием обертки для работы с сокетом. Он формирует и отсылает сообщения на сервер, параллельно передавая команды в GUI.


HandlerMessage - приемник сообщений. Передает новые сообщения и уведомления (о прочтенных сообщениях, о наборе текста, об отключении собеседника) на отрисовку в окне чата.

Один из методов ChatEngine:

searchCompany: function(_1) { //на вход принимает данные поиска

_1[action] = SEARCH_COMPANY; //указывает тип действия

stepShow(search_company_step); //несколько команд интерфейсу

$(# closeDialogBtn)[removeClass](disabled);

$(# search_company_loading)[css](visibility, visible);

Socket[send](_1) //отсылка сообщения

},

Сервер получает вот такое сообщение, а в окне запускается поиск собеседника:

{

my_sex: "M",

wish_sex: "F",

my_age_from: "25",

my_age_to: "35",

action: "SEARCH_COMPANY"

}

Пример сообщения от сервера (юзер печатает текст):

{

message: {

dialog_id: 35703950,

typing: true,

uid: 4564686

},

notice: "user_typing_a_message"

}

Отсылка команд на обработку. Не очень безопасно, но весьма практично. Берется  значения поля notice  и запускается метод хэндлера с таким же именем.

ws[onmessage] = function(_E) {  //прием сообщения от сервера

var _6 = JSON[parse](_E[data]); //разобрка принятой строки в JSON-объект

if (HandlerMessage[_6[notice]]) { //проверка наличия метода в хэндлере

if (_6[request_id]) {  

HandlerMessage[_6[notice]](_6[message], _6[request_id])  // вызов 1

} else {

HandlerMessage[_6[notice]](_6[message]) //вызов 2

}

}

};

Примерно так выглядит обмен сообщениями на сокете. Зеленым обозначены исходящие сообщения, остальное - принимаемые.

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

Вот так работает этот чат.
На сегодня пока все. Жду дальнейших пожеланий и возможно, идей.

P.S. как тут код отформатировать? Пробелы в начале строки отрезает

0
DELETED
Автор поста оценил этот комментарий

ееееее, потрашки....вкусняшка

раскрыть ветку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества