Xmpp клиент на java как написать
XMPP — Extensible Messaging and Presence Protocol (англ. расширяемый протокол обмена сообщениями и информацией о присутствии), ранее известный как Jabber (джа́ббер (англ. болтовня, трёп; тарабарщина) — это основанный на XML открытый, свободный для использования протокол для мгновенного обмена сообщениями и информацией о присутствии в режиме, близкому к режиму реального времени. Изначально спроектированный легко расширяемым, протокол, помимо передачи текстовых сообщений, поддерживает передачу голоса, видео и файлов по сети.
В отличие от коммерческих систем мгновенных сообщений, таких, как AIM, ICQ, MSN и Yahoo, XMPP является децентрализованной, расширяемой и открытой системой. Любой желающий может открыть свой сервер мгновенных сообщений, регистрировать на нём пользователей и взаимодействовать с другими серверами XMPP. На основе протокола XMPP уже открыто множество частных и корпоративных серверов XMPP. Среди них есть достаточно крупные проекты, такие как Google Talk, LiveJournal и Gizmo5.
В отличие от других интернет-пейджеров, джаббер больше похож на электронную почту:
• нет нумерации, есть произвольные имена
• джаббер-сервер может запустить любой
• у одного сервера может быть несколько имён (алиасов)
• каждый сервер может свободно общаться с каждым
• возможно безопасное подключение к серверу
• возможно шифрование отправляемых сообщений на уровне клиента
• возможно хранение всей истории чата на сервере
• есть веб-интерфейс
• возможно создание vCard визиток
• подтверждение доставки сообщения
В то же время, джаббер унаследовал некоторые приятные черты чатов:
• отображение статуса собеседника (в т.ч. расширенные статусы)
• многопользовательские комнаты («конференции»)
• боты полезной функциональности
Обзор Jabber клиентов под Windows: _http://habrahabr.ru/blogs/jabber/50776/
Для того, чтобы воспользоваться Jabber, необходимо иметь учётную запись на сервере. Таковую вы можете получить на следующих серверах (список серверов с графическим отображением поддерживаемых транспортов): _http://jabberworld.info/Список_работающих_публичных_серверов_Jabber
Сообщение отредактировал wandererbk — 30.10.09, 16:21
В: Как надо произносить «Jabber»?
О: Джаббер.
В: Как зарегистрироваться на сайте? Как зарегистрироваться на сервере?
О: Получить логин и пароль можно:
1. В разделе регистрации на сайте.
2. Через любой джаббер-клиент.
Для входа на сайт нужно использовать полный логин (ваше_имя@jabber.ru) и пароль.
В: Я забыл пароль, что мне делать?
О: Воспользуйтесь формой восстановления пароля: www.jabber.ru/xremind.
Восстановление возможно только при наличии адреса email в вкарде.
В: Что такое транспорт?
О: Сервис, который позволяет разговаривать с пользователями других IM-сетей через единственное подключение.
В: Как мне подключить транспорт в Майл.ру агент (Мрим)?
О: У вас должен быть емейл на одном из доменов, с которыми работает Майл.ру агент (mail.ru, list.ru, bk.ru, inbox.ru)
Найдите в своем клиенте Обзор Служб (Service Discovery).
Введите mrim.jabber.ru, нажмите «Просмотреть» (Browse).
Выберите «Зарегистрироваться» (Register).
Введите ваш емейл и пароль на одном из доменов mail.ru.
Авторизуйте транспорт.
Контакт mail.ru в ростере выглядит так . Добавляется в ростер как обычный джид.
В: Как мне подключить транспорт ICQ?
О: Подробное описание подключения в Bombus здесь bombus-im.org/wiki/howto/howto_icq. Инструкция подойдет для любого клиента.
В: Я хочу перенести свои контакты из аськи в джаббер с сохранением ников.
О: Скачайте программу QIP Contacts Manager. В этой программе выполните команду «Export» в файл *.clb.
Зарегистрируйтесь на транспорте ICQ.
Откройте файл *.clb в текстовом редакторе.
Введите имя ICQ и содержимое файла *.clb на _www.jabber.ru/jabaddons/qip2jabber.
Нажимайте кнопку. Вы получите данные в формате, подходящем для J.RU.
В: Я хочу перенести свои контакты с одного аккаунта на другой?
О: Можно воспользоваться утилитой JRU _http://www.jabber.ru/jabaddons/jru/jru.php.
В: Я хочу перенести свои контакты с одного транспорта на другой или удалить ненужные контакты?
О: Можно воспользоваться утилитой JRU _http://www.jabber.ru/jabaddons/jru/jru.php.
В: Что такое конференция/комната?
О: Сервис @conference.jabber.ru позволяет создавать комнаты, каждая из которых работает как отдельный чат. Зайти в конференцию можно из любого джаббер-клиента.
В: Как создать конференцию на сервере Jabber.Ru?
О: Новая конференция создается при первом заходе в нее пользователя. Такой пользователь получает права владельца (owner). По умолчанию, конференция временная. После создания комнаты можно изменить ее свойства и сделать постоянной (галочка «Persistent» в свойствах конференции).
В: Чем отличаются участники от модераторов? Кем я могу быть в конференции?
О: Иерархия пользовательских прав существует специально для того, чтобы пользователи путались могли контролировать процесс общения (например, в тематических конференциях).
1. Owner: может всё.
2. Admin
3. Moderator
4. Member
5. None
6. Participant
Сообщение отредактировал wandererbk — 01.11.09, 14:35
Для новичков рекомендую Jimm Aspro.
Из WМ клиентов альтернативы Talkonaut’у не вижу.
Сообщение отредактировал wandererbk — 07.11.09, 15:38
это из тех клиентов, темы для которых созданы на форуме. однако, ни один из перечисленных не имеет поддержки конференций. из клиентов с поддержкой оных есть OneTeam и japyt(это не совсем клиент, работает по принципу прокси c любым jabber-клиентом, написан на python Disabler’ом).
Сообщение отредактировал Xamil — 07.11.09, 16:07
Транспорт
Транспорты (они же шлюзы) — один из способов использования Jabber-клиентов для общения с пользователями других сетей. Заключается в том, что на Jabber-сервере устанавливается специальный модуль, преобразующие сообщения из формата Jabber в формат других сетей. Преобразование происходит совершенно незаметно для пользователя. Чаще всего транспорты служат для подключения к другим сетям обмена сообщениями, например, ICQ, IRC и MRIM, AIM, Yahoo!, MSN и другим. Но связь с другими сетями обмена сообщениями — не единственное применение транспортам, их также используют для доступа к различным ботам, предоставляющим самые разнообразные функции, например, погодным ботам, ботам-переводчикам или RSS-агрегаторам.
Преимущества транспортов
Транспорты настраиваются один раз и не зависят от клиента, с которого их используют. Подключив шлюзы с Jabber-клиента на домашнем компьютере, не требуется подключать их на мобильном телефоне и ноутбуке.
При прямом использовании нескольких сетей (через многопротокольные клиенты) может значительно возрасти количество передаваемых данных. Транспорты же потребляют гораздо меньше трафика, особенно если подключенных сетей много.
Транспорты, дающие доступ к специальным ботам позволяют создать из своего Jabber-клиента универсальный инструмент, объединяющий в себе, к примеру, RSS-читалку, почтовый клиент, словари и переводчики, а также средство для просмотра погоды и отправки СМС.
Примеры использования таких транспортов:
* транспорт почты: email%domain@smtp.jabber.snc.ru — для отправки почты на адрес email@domain;
* транспорт погоды: city_ID@weather.jrudevels.org — для получения прогноза погоды определенного города;
* транспорт-переводчик: направление_перевода@translate.jrudevels.org — осуществляет перевод текста в соответствующем направлении.
* транспорт-агрегатор RSS: название_ленты@rss.jrudevels.org
Недостатки использования транспортов
Транспорты — не панацея. Из-за закрытости многих IM и отсутствия полной документации по протоколу, пользователь может лишиться ряда возможностей по сравнению с использованием клиентов, напрямую работающих с данным протоколом. Например, желающим использовать ICQ или MRIM через Jabber придётся пожертвовать передачей файлов[1], а также, например, статусом «невидимый» и списками видимости. Следовательно, если требуются все возможности, лучше параллельно использовать ICQ-клиент, либо многопротокольный клиент с поддержкой как Jabber, так и ICQ.
При подключении транспортов теряются все группы. Помимо этого, если Вы вручную переименовывали контакты, то эта информация тоже пропадет. После подключение можно рассортировать новые контакты по группам, как и обычные Jabber-контакты.
Примечания:
1. ↑ Частично её могут восполнить Jabber Disk или Service Disk
Настройка jabber-клиента Talkonaut для общения в официальной конференции форума 4pda
1. Устанавливаем и запускаем:
2. Выбираем тип аккаунта — jabber
3. Регистрируемся на http://jabber.ru и вводим логин и пароль
! логин вводить с @jabber.ru, если собираетесь использовать Talkonaut по полной, то можно и реальный номер телефона ввести, я не стал.
4. Cохраняемся и видим список комнат (и свои контакты, если раньше пользовались jabber’om )
5. Меню-войти в конференцию
! комната 4pda, хост не меняете, ник под которым вы будете в конференции и ваш пароль.нажимаем сохранить.
6. Вы вошли 🙂
Сообщение отредактировал Blind Fury — 10.11.09, 12:46
Источник статьи: http://4pda.ru/forum/index.php?showtopic=142007
Протоколы прикладного уровня: Jabber/XMPP часть1
Прочитав статью и испробовав команды, научимся
—Соединяться с Jabber сервером
—Логиниться
—Менять статусы
—Отправлять сообщения
—Отключаться
В принципе, можно статью назвать «Введение в XMPP» или типа того… Но суть не изменится
Приступим-же!
Простая Jabber сессия представляет из себя следующую последовательность операций:
- Соединение с сервером
- Создание потока
- Включение шифрования и создание нового потока в шифрованном канале (опционально)
- Аутентификация
- Привязывание (bind) потока к ресурсу (имя@сервер/ресурс)
- Создание сессии
- Рассылка статуса «доступен»
- Отправка/получение сообщений, статусы, ростер, «визитные карточки», работа с сервисами и транспортами и т.п.
- Рассылка статуса «отключен»
- Закрытие потока
- Отключение от сервера
Попробуем реализовать эту схему. В моем эксперименте используется сервер jabber.ru, полагается что аккаунт на нем у вас уже есть.
В листинге ниже все мои комментарии, которые располагаются внутри XML блока, находятся в тегах XML комментариев , весь остальной XML представлен без изменений (разве что добавлены переносы строк для читаемости). Если соберетесь вводить все это в консоли (это вполне реально, я сам так и делал), желательно предварительно скопировать весь код в текстовый редактор, заменить авторизац. данные, удалить комментарии и переводы строк.
Блок XML, отправленный клиентом обозначается —C:, переданный сервером —S:
Соединение с сервером
telnet jabber.ru 5222
Trying 213.180.203.19.
Connected to pluton.relax.ru.
Escape character is ‘^]’.
Создание потока
Аутентификация
ВНИМАНИЕ! НИКОГДА не используйте такой метод аутентификации (передача пароля и логина в открытом виде по незашифрованному каналу) в реальных сетевых программах. Можно так поступать, для небольшого повышения производительности, если клиент (бот) и Jabber сервер находятся в одной защищенной сети или на одном сервере. В настоящих сетевых Jabber приложениях либо используют TLS шифрование всего потока, либо метод аутентификации DIGEST-MD5, а чаще — и то и другое одновременно.
После успешной аутентификации необходимо начать новый XML поток
—C:
xml version =’1.0′ ? >
stream:features >
bind xmlns =’urn:ietf:params:xml:ns:xmpp-bind’/>
session xmlns =’urn:ietf:params:xml:ns:xmpp-session’/>
stream:features >
Привязывание (bind) потока к ресурсу
iq — запросы к серверу. Используются для запроса/передачи какой-либо информации (ростер, «визитные карточки» и пр.) Имеют атрибуты type и id
type — один из списка: get (запрашивает данные), set (отправляет данные | устанавливает/заменяет какое-либо значение), result (ответ на успешное выполнение get или set, может содержать запрашиваемые данные), error (ответ на ошибочный запрос get или set)
id — просто каждый последующий iq запрос увеличивает id на единицу (инкрементируется). Сервер, отвечая на iq запрос повторяет его id. Это связано с тем, что иногда отсылается сразу несколько различных iq запросов.
В ответ на get или set запрос должен возвращаться ответ типа result (или error, если что-то не так)
Закрепляем этот поток за ресурсом «telnet»
—C:
Создание сессии
Рассылка статуса «доступен»
presence — для получения и рассылки широковещательной информации (напр. информация о статусе), а так же информации о подписке (например, добавление юзера в контакт-лист). Хотя может включать и указатель to для отсылки данных только определенному пользователю (напр. для определенного контакта ростера выставить статус «не беспокоить»:])
Может иметь атрибуты
from — JID имя@сервер/ресурс от кого presence. В принципе можно и не ставить — проставит сервер.
to — JID (с ресурсом или без) кому предназначен данный presence. Если не указано, рассылается всем, кто подписан (контакт-листу etc.)
type — тип presence, если отсутствует — то простое сообщение о статусе, иначе один из списка: unavailable (отключен),probe (запрос статуса клиента с сервера), subscribe (запрос подписки/просьба добавить в ростер), unsubscribed (отозвать подписку/удалить из ростера), subscribed (одобрить подписку/добавить в ростер)
Отсылаем сообщение об изменении статуса:
—C:
presence >
priority > 50 priority >
show > chat show >
c xmlns =» http://jabber . org / protocol / caps » node =» http://gajim . org / caps » ext =» xhtml cstates » ver =» 0 . 11 . 4 »/>
status > Ааа ппц я в консоли status >
x xmlns =» vcard-temp:x:update » >
photo > b2730e40aba4f7225456d0b4789bf2d5af34c3e3 photo >
x >
presence >
или только … Что хотим изменить то и отсылаем.
В ответ сервер рассылает всем из твоего контакт-листа (точнее тем, кто подписался командой prescence type=«subscribe» в т.ч. иногда и тебе) сообщение
—S:
И ещё, в следующий раз, когда будете xml постить, сделайте так, чтобы вокруд значений параметров двойные кавычки не превращались в ёлочки. Они там не в тему 🙂
Источник статьи: http://habr.com/ru/post/52007/