Попробую написать многобукв, почему стюардесса, которую тут некоторые пытаются откопать - не нужна. Причем особенно она не нужна с точки зрения погромиста, на чем и заострим внимание, итак.
0. Погромист не пишет программы для собственного развлечения, он должен получить конечный результат.
Это главный пункт, от которого надо отталкиваться и никогда нельзя про него забывать.
1. Конечный результат - это пользователи и только пользователи.
2. Пользователя совершенно не волнует какой ПРОТОКОЛ внутри программы, его в первую и практически единственную очередь интересует интерфейс - любого, внимание, пользователя. Не только блондинки с айфоном, но и условных ляха и комара с клитором тхинкпада.
3. В 2к18+1 году существует огромное множество ГОТОВЫХ решений для написания ПРОТОКОЛА любых чатов и мессенджеров грубо говоря в несколько кликов, причем маминому погромисту вообще не надо разбираться не в тисипиайпи, ни даже в хттп, не говоря уже про xml, типовой чат создается следующим образом: мышкой в Firebase console (или любом другом подобном продукте) описываются структуры типа Message со всеми нужными полями типа user, body и attachment, ну и структура Chat c полями users и messages. Ииии … все! СЕРВЕР уже готов! Даже управление пользователями не нужно сочинять заново, в том же Google Firebase (или Apple CloudKit, или десятке других аналогичных решений, можно даже швабодные найти) ВСЕ уже есть, можно настраивать авторизацию по вкусу - через емейл, телефон, логин-пароль, соцсети или черта лысого. Это настраивается один раз за полчаса и забывается до решения более важных задач. Причем клиентская часть протокола ТОЖЕ уже готова и ТОЖЕ не является задачей вообще - достаточно подключить SDK выбранной платформы в свою программу на любом языке и все чаты с сообщениями уже автоматически синхронизируются с клиентами.
4. А более важные задачи - это ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ. Абсолютно в любом раскладе, даже если мы пишем чатик для ляха и комара - так вот если не тратить время на велосипедный сервер и протокол, или реанимацию говна из нулевых, то можно 95% усилий потратить именно на ИНТЕРФЕЙС клиента и именно тут можно проявить свою погромистскую индивидуальность, написав клиент на Rust, Haskell, Agda, под X11, xmonad, и черта лысого, и выполнить все хотелки комара и ляха, если у нас поставлена задача удивить именно этих удивительных существ! И только ПОСЛЕ того, как мы, за наш восхитительный продукт под маргинальные системы на маргинальных языках погромирования, получили признание всех аутистов мира - можно уже оптимизировать ПРОТОКОЛ, выбрасывая неподходящие нам идеологически решения корпораций, и формализуя спецификацию протокола, чтоб иные мамины погромисты смогли написать клиент для нашего маргинального чятика. Можно даже совместимость с XMPP прикрутить, без проблем, но ПОТОМ, в самую последнюю очередь.
В случае же начинания чятика с написания xml-парсера и поиска текста методов тыка в xmpp-станзе как в бд(ц), погромист тратит свое время на “преждевременную оптимизацию” и в обозримые сроки не получит никакого результата - ни рабочего сервера, ни рабочего протокола, до клиентов дело не дойдет вообще, как и до заведения каких-либо пользователей. Даже лях с комаром, как и любой другой воинствующий хмпп-евангелист, не пошевелят пальцем смотреть на это поделие, а продолжат сидеть в ткаббере, и в чем там сидит комар, потому что в ткаббер вложено 15 лет труда по изготовлению ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ, пусть даже для такого странного как они!