Difference between revisions of "XEP-0196: User Game"

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
(Схема XML)
(Введение: исправление перевода)
Line 19: Line 19:
 
= Введение =
 
= Введение =
  
Публичная подписка и [[PEP]] могут быть использованы для публикации "расширенной информации о присутствии" пользователей. Этот документ определяет расширенный формат присутствия, который позволяет передавать информацию об играх, в которые в данный момент играет пользователь. Эта информация может представлять интерес для других пользователей, а также может быть использована в социальных сетевых приложениях.
+
Для публикации «расширенной [[информация о присутствии|информации о присутствии]]» пользователей могут быть использованы механизм [[Publish-Subscribe|публикации-подписки (Publish-Subscribe)]] и [[PEP]]. Этот документ определяет расширенный формат информации о присутствии, который позволяет передавать информацию об играх, в которые в данный момент играет пользователь. Эта информация может представлять интерес для других пользователей, а также может быть использована в социальных сетевых приложениях.
  
 
= Протокол =
 
= Протокол =

Revision as of 18:46, 4 June 2010


Внимание

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

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

Информация о документе

  • Автор: Peter Saint-Andre
  • Издатель: © 1999 - 2010 XMPP Standards Foundation
  • Статус: Отложен
  • Тип: Основное расширение
  • Версия: 0.3
  • Последнее обновление: 2008-09-25
ВНИМАНИЕ: Рассмотрение этого документа было отложено XMPP Standards Foundation. Реализация протокола, описанного здесь, не рекомендуется.

Введение

Для публикации «расширенной информации о присутствии» пользователей могут быть использованы механизм публикации-подписки (Publish-Subscribe) и PEP. Этот документ определяет расширенный формат информации о присутствии, который позволяет передавать информацию об играх, в которые в данный момент играет пользователь. Эта информация может представлять интерес для других пользователей, а также может быть использована в социальных сетевых приложениях.

Протокол

Контейнер и его элементы

Информация об играх устанавливается пользователем (или автоматически, за счёт интеграции с играми) и передаётся в сеть. Для описания игровых данных используется контейнер <game/>, определяется с помощью пространства имён "urn:xmpp:gaming:0%22. Информация об игре передаётся в следующих элементах контейнера <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 Адрес сервера, на котором играет пользователь wow6.example.com xs:string Дополнительный
server_name Имя этого сервера WOW Example xs:string Дополнительный
uri URI игры́ http://wow.example.com/ xs:anyURI Дополнительный
ПРИМЕЧАНИЕ: типы данных, указанных выше, определены в XML Schema Part 2.

Механизм

Когда пользователь начинает играть, его клиент может опубликовать это через PEP "urn:xmpp:gaming:0%22 или общий узел 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>

Безопасность

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

IANA

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

XMPP

Пространство имён

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

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

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

Схема 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>