21 lines
No EOL
1.6 KiB
Markdown
21 lines
No EOL
1.6 KiB
Markdown
### 房间预览
|
|
|
|
有时,允许用户在未加入房间的情况下“旁听”并阅读房间中发布的消息,即为房间提供预览,是十分有用的功能。当与 [访客访问](#guest-access) 结合使用时,这一功能效果尤为明显。
|
|
|
|
房间预览通过 `world_readable` 的 [房间历史消息可见性](#room-history-visibility) 设置以及 [GET /events](#get_matrixclientv3events) 接口的特殊版本实现。
|
|
|
|
#### 客户端行为
|
|
|
|
希望在未加入房间的情况下查看房间内容的客户端,应调用 [GET /rooms/:room_id/initialSync](#get_matrixclientv3roomsroomidinitialsync),然后调用 [GET /events](#peeking_get_matrixclientv3events)。对于每一个希望查看的房间,客户端都需要并行执行此操作。
|
|
|
|
当然,客户端也可以调用其他接口,例如 [GET /rooms/:room_id/messages](#get_matrixclientv3roomsroomidmessages) 和 [GET /search](#post_matrixclientv3search),以访问 `/events` 流以外的事件。
|
|
|
|
{{% http-api spec="client-server" api="peeking_events" anchor_base="peeking" %}}
|
|
|
|
#### 服务器行为
|
|
|
|
对于尚未加入房间的客户端,服务器仅需返回这些事件:在事件发生时,房间状态存在 `m.room.history_visibility` 状态事件,且其 `history_visibility` 值为 `world_readable`。
|
|
|
|
#### 安全性注意事项
|
|
|
|
客户端可以向用户展示房间处于 `world_readable` 状态时,*可能*会向未加入房间的用户显示消息。通过此模块无法判断是否确有未加入的访客用户实际查看了房间中的事件,也无法列举或统计正在“旁听”的用户数量。 |