XEP-0196: User Game
Внимание Этот текст не является официальным переводом документа XEP-0196: User Game и может не соответствовать оригиналу. Для разработки программ используйте официальный текст. |
Этот документ описывает расширение протокола XMPP для передачи информации об играх, в которые в данный момент играет пользователь.
Contents
Информация о документе
- Автор: Peter Saint-Andre
- Издатель: © 1999 - 2010 XMPP Standards Foundation
- Статус: Отложен
- Тип: Основное расширение
- Версия: 0.3
- Последнее обновление: 2008-09-25
- ВНИМАНИЕ: Рассмотрение этого документа было отложено XMPP Standards Foundation. Реализация протокола, описанного здесь, не рекомендуется.
Введение
Механизм публикации-подписки (Publish-Subscribe) и PEP могут быть использованы для публикации разнообразной «расширенной информации о присутствии» пользователей. Этот документ определяет расширенный формат информации о присутствии, который позволяет передавать информацию об играх, в которые в данный момент играет пользователь. Эта информация может представлять интерес для других пользователей, а также может быть использована в социальных сетевых приложениях.
Протокол
Контейнер и его элементы
Информация об играх устанавливается пользователем (или автоматически, за счёт интеграции с играми) и передаётся в сеть клиентским ПО. Для описания игровых данных используется контейнер <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.
Механизм
Когда пользователь начинает играть, его клиент может опубликовать информацию об этом факте через 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>
Безопасность
Клиент должен предоставить пользователю возможность настроить, о каких играх информацию отправлять, а о каких нет.
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>