PUT (/serviceconfigs/{scid}/sessiontemplates/{sessionTemplateName}/sessions/{sessionName})
创建、更新或加入会话。
重要提示:
此 URI 方法需要每个请求都有一个 X-Xbl-Contract-Version 104/105 或更高版本的标头元素。
备注
此 HTTP/REST 方法创建、加入或更新会话,具体取决于发送的是同一 JSON 请求正文模板的哪个子集。 如果成功,则返回一个 MultiplayerSession 对象,其中包含从服务器返回的响应。 其中的属性可能与传入的 MultiplayerSession 对象中的属性不同。 此方法可由 Microsoft.Xbox.Services.Multiplayer.MultiplayerService.WriteSessionAsync 包装。
会话创建和更新操作将 PUT 与 application/json 正文(表示要应用的更改)一起使用。 这些是幂等操作,也就是说,相同更改的多个应用程序没有其他影响。
JSON 请求正文反映了会话数据结构。 所有字段和子字段均为可选。
PUT 方法的会话创建或加入模式的有线格式如下所示。
注意:
使用此模式时要小心。 无论会话的当前状态如何,都会盲目地应用更新。
PUT /serviceconfigs/00000000-0000-0000-0000-000000000000/sessiontemplates/quick/sessions/00000000-0000-0000-0000-000000000001 HTTP/1.1
Content-Type: application/json
PUT 方法的会话更新模式的有线格式如下所示。
PUT /serviceconfigs/00000000-0000-0000-0000-000000000000/sessiontemplates/quick/sessions/00000000-0000-0000-0000-000000000001 HTTP/1.1
Content-Type: application/json
更新会话属性的 PUT 方法的有线格式如下所示。 它相当于对会话 URI 执行 PUT 操作,正文中只有下面的对象作为属性。 不同之处在于,如果会话不存在,此操作将返回错误代码“404 未找到”。 此操作支持 If-Match 标头。
PUT /serviceconfigs/00000000-0000-0000-0000-000000000000/sessiontemplates/quick/sessions/00000000-0000-0000-0000-000000000001/properties HTTP/1.1
Content-Type: application/json
{ "system": { }, "custom": { } }
URI 参数
参数 | 类型 | 说明 |
---|---|---|
scid | GUID | 服务配置标识符 (SCID)。 会话标识符的第 1 部分。 |
sessionTemplateName | 字符串 | 会话模板当前实例的名称。 会话标识符的第 2 部分。 |
sessionName | GUID | 会话的唯一 ID。 会话标识符的第 3 部分。 |
HTTP 状态代码
请求正文
以下是用于创建或加入会话的示例请求正文。 请求正文的以下成员是可选的。 所有其他可能的成员在请求中均被禁止。
成员 | 类型 | 说明 |
---|---|---|
constants | 对象 | 与会话模板合并以生成会话常量的只读设置。 |
properties | 对象 | 更改为合并到会话属性中。 |
members.me | 对象 | 工作方式与其顶层对应项非常相似的常量和属性。 任何 PUT 方法都要求用户是会话的成员,在必要时将添加用户。 如果“me”被指定为 null,发起请求的成员将被从会话中删除。 |
members | 对象 | 表示要添加到会话的用户的其他对象,由从零开始的索引键控。 请求中的成员数始终以 0 开头,即使会话已经包含成员。 成员按照它们在请求中显示的顺序添加到会话。 成员属性只能由其所属的用户设置。 |
servers | 对象 | 一些值,指示会话的关联服务器参与者集的更新和添加。 如果某服务器被指定为 null,系统将从会话中删除该服务器条目。 |
{
"properties": {
"custom": {"KANWE": "MGMSY"},
"system": {}
},
"constants": {
"custom": {},
"system": {"visibility": "open"}
},
"members": {
"reserve_0": {
"constants": {
"custom": {"type": "leader"},
"system": {"xuid": "5500461"} }}
}
}
响应正文
用于创建或加入会话的示例响应正文:
{
"contractVersion": 104,
"correlationId": "0FE81338-EE96-46E3-A3B5-2DBBD6C41C3B",
"nextTimer": "2009-06-15T13:45:30.0900000Z",
"initializing": {
"stage": "measuring",
"stageStartTime": "2009-06-15T13:45:30.0900000Z",
"episode": 1
},
"hostCandidates": [ "ab90a362", "99582e67" ],
"constants": {
"system": {"visibility": "open"},
"custom": {}
},
"properties": {
"system": { "turn": [] },
"custom": { "myProperty": "myValue" }
},
"members": {
"1": {
"properties": {
"system": { },
"custom": { }
},
"constants": {
"system": { "xuid": "5500461" },
"custom": { }
}
"gamertag": "stacy",
"deviceToken": "9f4032ba7",
"reserved": true,
"activeTitleId": "8397267",
"joinTime": "2009-06-15T13:45:30.0900000Z",
"turn": true,
"initializationFailure": "latency",
"initializationEpisode": 1,
"next": 4
},
},
"membersInfo": {
"first": 1,
"next": 4,
"count": 1,
"accepted": 0
},
"servers": {
"name": {
"constants": { },
"properties": { }
}
}
}
另请参阅
父级
/serviceconfigs/{scid}/sessiontemplates/{sessionTemplateName}/sessions/{sessionName}