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

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
m (Версии пространства имён: Опечатка)
 
(6 intermediate revisions by 2 users not shown)
Line 19: Line 19:
 
= Введение =
 
= Введение =
  
Публичная подписка и [[PEP]] могут быть использованы для публикации "расширенной информации о присутствии" пользователей. Этот документ определяет расширенный формат присутствия, который позволяет передавать информацию об играх, в которые в данный момент играет пользователь. Эта информация может представлять интерес для других пользователей, а также может быть использована в социальных сетевых приложениях.
+
Механизм [[Publish-Subscribe|публикации-подписки (Publish-Subscribe)]] и [[PEP]] могут быть использованы для публикации разнообразной «расширенной [[информация о присутствии|информации о присутствии]]» пользователей. Этот документ определяет расширенный формат информации о присутствии, который позволяет передавать информацию об играх, в которые в данный момент играет пользователь. Эта информация может представлять интерес для других пользователей, а также может быть использована в социальных сетевых приложениях.
  
 
= Протокол =
 
= Протокол =
Line 25: Line 25:
 
== Контейнер и его элементы ==
 
== Контейнер и его элементы ==
  
Информация об играх устанавливается пользователем (или автоматически, за счёт интеграции с играми) и передаётся в сеть. Для описания игровых данных используется контейнер <game/>, определяется с помощью пространства имён "urn:xmpp:gaming:0". Информация об игре передаётся в следующих элементах контейнера <game/>:
+
Информация об играх устанавливается пользователем (или автоматически, за счёт интеграции с играми) и передаётся в сеть [[клиент|клиентским ПО]]. Для описания игровых данных используется контейнер <game/>, с указанием пространства имён «urn:xmpp:gaming:. Информация об игре передаётся в следующих элементах контейнера <game/>:
  
<b>Таблица 1. Элементы</b>
 
 
{| class="standard"
 
{| class="standard"
 +
|+ Таблица 1. Элементы
 
  !Элемент
 
  !Элемент
 
  !Описание
 
  !Описание
Line 36: Line 36:
 
  |-
 
  |-
 
  |character_name
 
  |character_name
  |Имя пользователя в игре
+
  |Имя пользовательского персонажа в игре
 
  |Stentor
 
  |Stentor
 
  |xs:string
 
  |xs:string
  |Дополнительный
+
  |НЕОБЯЗАТЕЛЬНО
 
  |-
 
  |-
 
  |character_profile
 
  |character_profile
  |Игровой профиль пользователя
+
  |Игровой профиль пользовательского персонажа
 
  |http''':'''//wow.example.com/profile.html?12345
 
  |http''':'''//wow.example.com/profile.html?12345
 
  |xs:anyURI
 
  |xs:anyURI
  |Дополнительный
+
  |НЕОБЯЗАТЕЛЬНО
 
  |-
 
  |-
 
  |name
 
  |name
Line 51: Line 51:
 
  |Worlds of Warfare
 
  |Worlds of Warfare
 
  |xs:string
 
  |xs:string
  |Обязателен
+
  |ОБЯЗАТЕЛЬНО
 
  |-
 
  |-
 
  |level
 
  |level
  |Уровень
+
  |Уровень пользователя в игре
 
  |66
 
  |66
 
  |xs:string
 
  |xs:string
  |Дополнительный
+
  |НЕОБЯЗАТЕЛЬНО
 
  |-
 
  |-
 
  |server_address
 
  |server_address
  |Адрес сервера, на котором играет пользователь
+
  |Адрес сервера (имя хоста или IP-адрес), на котором играет пользователь
 
  |wow6.example.com
 
  |wow6.example.com
 
  |xs:string
 
  |xs:string
  |Дополнительный
+
  |НЕОБЯЗАТЕЛЬНО
 
  |-
 
  |-
 
  |server_name
 
  |server_name
  |Имя этого сервера
+
  |Имя сервера, на котором играет пользователь
 
  |WOW Example
 
  |WOW Example
 
  |xs:string
 
  |xs:string
  |Дополнительный
+
  |НЕОБЯЗАТЕЛЬНО
 
  |-
 
  |-
 
  |uri
 
  |uri
  |URI игры́
+
  |URI игры́ или соответствующего сервиса
 
  |http''':'''//wow.example.com/
 
  |http''':'''//wow.example.com/
 
  |xs:anyURI
 
  |xs:anyURI
  |Дополнительный
+
  |НЕОБЯЗАТЕЛЬНО
 
  |}
 
  |}
  
: '''ПРИМЕЧАНИЕ:''' типы данных, указанных выше, определены в XML Schema Part 2.
+
;Примечание: указанные выше типы данных определены в [http://www.w3.org/TR/xmlschema-2/ XML Schema Part 2].
  
 
= Механизм =
 
= Механизм =
  
Когда пользователь начинает играть, его клиент может опубликовать это через PEP &quot;urn:xmpp:gaming:0&quot; или общий узел PubSub. Так как информация об игре может не являться достоверной и может изменяться независимо от пользователя, она не может быть предоставлена в качестве дополнения к &lt;presence/&gt;.
+
Когда пользователь начинает играть, его клиент может опубликовать информацию об этом факте через [[PEP]]-узел с идентификатором (NodeID) «urn:xmpp:gaming:0» (см. ''Пространства имён протоколов'' {{fixme|в оригинале битая ссылка}} касательно использования одного или более постоянных пространств имён) или обычный узел [[PubSub]]. Поскольку информация об игре не является информаций о присутствии в изначальном смысле и может изменяться независимо от состояния доступности пользователя, её НЕ СЛЕДУЕТ использовать в качестве дополнения к [[станс|стансу]] типа &lt;presence/&gt;.
  
 
<b>Пример 1. Публикация</b>
 
<b>Пример 1. Публикация</b>
Line 100: Line 100:
 
Затем информация доставляется пользователям:
 
Затем информация доставляется пользователям:
  
<b>Пример 2. Информация доходит до подписчиков</b>
+
<b>Пример 2. Информация доставляется подписчикам</b>
  
 
  <message from='stpeter@jabber.org' to='maineboy@jabber.org'>
 
  <message from='stpeter@jabber.org' to='maineboy@jabber.org'>
Line 129: Line 129:
 
  </iq>
 
  </iq>
  
<b>Пример 4. Информация об остановке доходит до подписчиков</b>
+
<b>Пример 4. Информация об остановке доставляется подписчикам</b>
  
 
  <message from='stpeter@jabber.org' to='maineboy@jabber.org'>
 
  <message from='stpeter@jabber.org' to='maineboy@jabber.org'>
Line 157: Line 157:
 
== Версии пространства имён ==
 
== Версии пространства имён ==
  
Если протокол, определенный в данной спецификации, изменится и не будет полностью обратно совместимым с более ранней версиеё, XMPP передаёт номер версии протокола , который определён в четвёртой части пространства имён.
+
Если протокол, определенный в данной спецификации, изменится и не будет полностью обратно совместимым с более ранней версией, XMPP передаёт номер версии протокола , который определён в четвёртой части пространства имён.
  
 
= Схема XML =
 
= Схема XML =
  
 
  <?xml version='1.0' encoding='UTF-8'?>
 
  <?xml version='1.0' encoding='UTF-8'?>
 
 
  <xs:schema
 
  <xs:schema
 
     xmlns:xs='http''':'''//www.w3.org/2001/XMLSchema'
 
     xmlns:xs='http''':'''//www.w3.org/2001/XMLSchema'
Line 168: Line 167:
 
     xmlns='urn:xmpp:gaming:0'
 
     xmlns='urn:xmpp:gaming:0'
 
     elementFormDefault='qualified'>
 
     elementFormDefault='qualified'>
 
 
   <xs:element name='game'>
 
   <xs:element name='game'>
 
     <xs:complexType>
 
     <xs:complexType>
Line 182: Line 180:
 
     </xs:complexType>
 
     </xs:complexType>
 
   </xs:element>
 
   </xs:element>
 
 
  </xs:schema>
 
  </xs:schema>

Latest revision as of 15:31, 5 June 2010


Внимание

Этот текст не является официальным переводом документа 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>