XEP-0196: User Game

From JaWiki (Jabber/XMPP wiki)
Revision as of 15:31, 5 June 2010 by Andreymal (Talk | contribs) (Версии пространства имён: Опечатка)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


Внимание

Этот текст не является официальным переводом документа XEP-0196: User Game и может не соответствовать оригиналу. Для разработки программ используйте официальный текст.

Этот документ описывает расширение протокола XMPP для передачи информации об играх, в которые в данный момент играет пользователь.

Информация о документе[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/>:

Таблица 1. Элементы
Элемент Описание Пример Тип Включение
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» (см. Пространства имён протоколовQuestion.gifПроверить: в оригинале битая ссылка касательно использования одного или более постоянных пространств имён) или обычный узел 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]

Клиент должен предоставить пользователю возможность настроить, о каких играх информацию отправлять, а о каких нет.

IANA[edit]

Этот документ не требует взаимодействия с Internet Assigned Numbers Authority (IANA).

XMPP[edit]

Пространство имён[edit]

Эта спецификация использует пространство имён urn:xmpp:gaming:0

Версии пространства имён[edit]

Если протокол, определенный в данной спецификации, изменится и не будет полностью обратно совместимым с более ранней версией, XMPP передаёт номер версии протокола , который определён в четвёртой части пространства имён.

Схема XML[edit]

<?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>