XEP-0196: User Game
From JaWiki (Jabber/XMPP wiki)
| Внимание Этот текст не является официальным переводом документа XEP-0196: User Game и может не соответствовать оригиналу. Для разработки программ используйте официальный текст. |
Этот документ описывает расширение протокола XMPP для передачи информации об играх, в которые в данный момент играет пользователь.
Contents |
[edit] Информация о документе
- Автор: Peter Saint-Andre
- Издатель: © 1999 - 2010 XMPP Standards Foundation
- Статус: Отложен
- Тип: Основное расширение
- Версия: 0.3
- Последнее обновление: 2008-09-25
- ВНИМАНИЕ: Рассмотрение этого документа было отложено XMPP Standards Foundation. Реализация протокола, описанного здесь, не рекомендуется.
[edit] Введение
Механизм публикации-подписки (Publish-Subscribe) и PEP могут быть использованы для публикации разнообразной «расширенной информации о присутствии» пользователей. Этот документ определяет расширенный формат информации о присутствии, который позволяет передавать информацию об играх, в которые в данный момент играет пользователь. Эта информация может представлять интерес для других пользователей, а также может быть использована в социальных сетевых приложениях.
[edit] Протокол
[edit] Контейнер и его элементы
Информация об играх устанавливается пользователем (или автоматически, за счёт интеграции с играми) и передаётся в сеть клиентским ПО. Для описания игровых данных используется контейнер <game/>, с указанием пространства имён «urn:xmpp:gaming:0». Информация об игре передаётся в следующих элементах контейнера <game/>:
| Элемент | Описание | Пример | Тип | Включение |
|---|---|---|---|---|
| character_name | Имя пользовательского персонажа в игре | Stentor | xs:string | НЕОБЯЗАТЕЛЬНО |
| character_profile | Игровой профиль пользовательского персонажа | http://wow.example.com/profile.html?12345 | xs:anyURI | НЕОБЯЗАТЕЛЬНО |
| name | Название игры | Worlds of Warfare | xs:string | ОБЯЗАТЕЛЬНО |
| level | Уровень пользователя в игре | 66 | xs:string | НЕОБЯЗАТЕЛЬНО |
| server_address | Адрес сервера (имя хоста или IP-адрес), на котором играет пользователь | wow6.example.com | xs:string | НЕОБЯЗАТЕЛЬНО |
| server_name | Имя сервера, на котором играет пользователь | WOW Example | xs:string | НЕОБЯЗАТЕЛЬНО |
| uri | URI игры́ или соответствующего сервиса | http://wow.example.com/ | xs:anyURI | НЕОБЯЗАТЕЛЬНО |
- Примечание
- указанные выше типы данных определены в XML Schema Part 2.
[edit] Механизм
Когда пользователь начинает играть, его клиент может опубликовать информацию об этом факте через PEP-узел с идентификатором (NodeID) «urn:xmpp:gaming:0» (см. Пространства имён протоколов
Проверить: в оригинале битая ссылка касательно использования одного или более постоянных пространств имён) или обычный узел PubSub. Поскольку информация об игре не является информаций о присутствии в изначальном смысле и может изменяться независимо от состояния доступности пользователя, её НЕ СЛЕДУЕТ использовать в качестве дополнения к стансу типа <presence/>.
Пример 1. Публикация
<iq type='set' from='stpeter@jabber.org/work' id='gaming1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='urn:xmpp:gaming:0'>
<item id='1feea9cceec2537e1b561e66d45bc566e276f22f'>
<game xmlns='urn:xmpp:gaming:0'>
<name>chess</name>
<uri>http://www.chesspark.com/</uri>
</game>
</item>
</publish>
</pubsub>
</iq>
Затем информация доставляется пользователям:
Пример 2. Информация доставляется подписчикам
<message from='stpeter@jabber.org' to='maineboy@jabber.org'>
<event xmlns='http://jabber.org/protocol/pubsub#event'>
<items node='urn:xmpp:gaming:0'>
<item id='1feea9cceec2537e1b561e66d45bc566e276f22f'>
<game xmlns='urn:xmpp:gaming:0'>
<name>chess</name>
<uri>http://www.chesspark.com/</uri>
</game>
</item>
</items>
</event>
</message>
Когда пользователь останавливает игру, необходимо отправить пустой элемент <game/> с таким же ItemID:
Пример 3. Игра останавливается
<iq type='set' from='stpeter@jabber.org/work' id='gaming2'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='urn:xmpp:gaming:0'>
<item id='1feea9cceec2537e1b561e66d45bc566e276f22f'>
<game xmlns='urn:xmpp:gaming:0'/>
</item>
</publish>
</pubsub>
</iq>
Пример 4. Информация об остановке доставляется подписчикам
<message from='stpeter@jabber.org' to='maineboy@jabber.org'>
<event xmlns='http://jabber.org/protocol/pubsub#event'>
<items node='urn:xmpp:gaming:0'>
<item id='1feea9cceec2537e1b561e66d45bc566e276f22f'>
<game xmlns='urn:xmpp:gaming:0'/>
</item>
</items>
</event>
</message>
[edit] Безопасность
Клиент должен предоставить пользователю возможность настроить, о каких играх информацию отправлять, а о каких нет.
[edit] IANA
Этот документ не требует взаимодействия с Internet Assigned Numbers Authority (IANA).
[edit] XMPP
[edit] Пространство имён
Эта спецификация использует пространство имён urn:xmpp:gaming:0
[edit] Версии пространства имён
Если протокол, определенный в данной спецификации, изменится и не будет полностью обратно совместимым с более ранней версией, XMPP передаёт номер версии протокола , который определён в четвёртой части пространства имён.
[edit] Схема XML
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='urn:xmpp:gaming:0'
xmlns='urn:xmpp:gaming:0'
elementFormDefault='qualified'>
<xs:element name='game'>
<xs:complexType>
<xs:sequence minOccurs='0'>
<xs:element name='character_name' type='xs:string' minOccurs='0'/>
<xs:element name='character_profile' type='xs:anyURI' minOccurs='0'/>
<xs:element name='level' type='xs:string' minOccurs='0'/>
<xs:element name='name' type='xs:string'/>
<xs:element name='server_address' type='xs:string' minOccurs='0'/>
<xs:element name='server_name' type='xs:string' minOccurs='0'/>
<xs:element name='uri' type='xs:anyURI' minOccurs='0'/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>