Город, шаг второй — чат
Posted on

Город — это MMORPG про мегаполис в киберпанк и нуар стилистике. Вторым шагом к его реализации стал чат.
Технологии
Язык программирования: C++.
Сетевой фреймворк: Boost.Asio.
GUI фреймворк: Qt.
Что готово
- синхронный двухпоточный UDP-клиент:
- указание адреса и порта сервера в конфигурационном файле;
- отдельный поток для запросов к серверу;
- интерфейс пользователя;
- синхронный однопоточный UDP-сервер:
- указание порта в параметрах командной строки;
- поддержка простого протокола;
- хранение истории сообщений;
- поддержка списка подключенных клиентов.
Протокол
Запрос: nickname;command[;parameter].
Команды:
interlocutors— запрос списка собеседников; параметра не имеет; в ответ сервер вернёт список ников собеседников, разделённый символом;;message— отправка сообщения; параметр — текст сообщения; в ответ сервер вернёт строкуok;history— запрос истории сообщений; параметр — временная метка (Unix time), с которой нужны сообщения; сервер вернёт список сообщений, временная метка которых больше переданной в параметре; сообщения будут разделённы символом;; каждое сообщение будет иметь форматnickname:timestamp:text.
При ошибках сервер возвращает строку в формате error;description.
Репозиторий
Ссылка: http://github.com/thewizardplusplus/city/tree/v0.2.1.
Содержание: код.
Лицензия: MIT.
Скриншоты
Пример работы чата — версия под Windows:

Авторские права
Иконка чата
Автор: scyg.
Лицензия: CC0 1.0.
Ссылка: http://openclipart.org/detail/170274/chat-button-by-scyg.
Иконка кнопки «Войти»
Автор: warszawianka.
Лицензия: CC0 1.0.
Ссылка: http://openclipart.org/detail/35347/tango-system-users-by-warszawianka.
Иконка кнопки «Отправить»
Автор: tdhoward75.
Лицензия: CC0 1.0.
Ссылка: http://openclipart.org/detail/168820/curved-arrow-blue-by-tdhoward75.