73 lines
2.7 KiB
Markdown
73 lines
2.7 KiB
Markdown
---
|
||
title: 房间版本 4
|
||
type: docs
|
||
weight: 40
|
||
version: 4
|
||
---
|
||
|
||
{{< boxes/warning >}}
|
||
本页面的翻译未经核对,可能存在翻译质量不佳、错翻、漏翻等情况。您可以在 <a href="https://codeberg.org/wholetrans/docs-matrix-spec">Forgejo 存储库</a> 打开 Issue、提交 Pull Request 或<a href="mailto:errata@wholetrans.org">邮件联系</a>我们提出改进建议和参与翻译与核对。
|
||
{{< /boxes/warning >}}
|
||
|
||
|
||
本房间版本在 [版本 3](/rooms/v3) 的基础上,采用了不同的事件 ID 编码方式。
|
||
|
||
## 客户端注意事项
|
||
|
||
本房间版本更改了发送给客户端的事件 ID 格式。客户端应始终将事件 ID 视为不可理解的标识符,而不应关心其具体格式。在将事件 ID 包含在请求路径中时,客户端仍需对其进行编码。
|
||
|
||
客户端应做好事件 ID 的格式已从 `$randomstring:example.org` 更改为类似 `$Rqnc-F-dvnEYJTyHq_iKxU2bZ1CI92-kuZq3a5lr5Zg`(请注意没有域名部分)的准备。
|
||
|
||
虽然本房间版本对此未作更改,但如客户端在本地实现了修订算法,应参考下文的 [修订](#redactions) 部分,了解完整内容。
|
||
|
||
## 服务器实现要点
|
||
|
||
{{% boxes/warning %}}
|
||
本节内容仅供服务器实现者参考。使用 Client-Server API 的应用通常不会受到此处细节的影响。上述关于客户端注意事项的部分,才是 Client-Server API 用例应参考的内容。
|
||
{{% /boxes/warning %}}
|
||
|
||
房间版本 4 使用了 [房间版本 3](/rooms/v3) 中定义的相同算法,不过在生成事件 ID 时采用了 URL 安全的 base64 编码方式。
|
||
|
||
### 事件 ID
|
||
|
||
{{% boxes/rationale %}}
|
||
房间版本 3 生成的事件 ID,对于未对事件 ID 编码的客户端实现来说难以正常使用。此外,由于 `/` 字符在某些反向代理软件中会被区别对待,也引发了相关担忧,并在一般管理上带来了不便。
|
||
{{% /boxes/rationale %}}
|
||
|
||
{{% rver-fragment name="v4-event-ids" %}}
|
||
|
||
## 与 v3 保持一致的部分
|
||
|
||
以下内容自 v3 起未作修改,为保证完整性予以收录。
|
||
|
||
### 修订
|
||
|
||
{{% rver-fragment name="v1-redactions" %}}
|
||
|
||
### 处理修订
|
||
|
||
{{% rver-fragment name="v3-handling-redactions" %}}
|
||
|
||
### 事件格式
|
||
|
||
事件格式与 [房间版本 3](/rooms/v3#event-format) 相同,但以下示例中的事件 ID 已根据本房间版本的更改进行了更新。
|
||
|
||
{{% rver-fragment name="v4-event-format" %}}
|
||
|
||
#### 已废弃的事件内容模式
|
||
|
||
{{% rver-fragment name="v1-deprecated-formatting-off-spec" %}}
|
||
|
||
{{% rver-fragment name="v1-stringy-power-levels" %}}
|
||
|
||
### 授权规则
|
||
|
||
{{% rver-fragment name="v3-auth-rules" %}}
|
||
|
||
### 状态解析
|
||
|
||
{{% rver-fragment name="v2-state-res" %}}
|
||
|
||
### 规范化 JSON
|
||
|
||
{{% rver-fragment name="v1-canonical-json" %}}
|