docs-matrix-spec/locales/zh-Hans/client-server-api/modules/room_previews.md
2025-04-20 16:13:37 +08:00

1.6 KiB

房间预览

有时,允许用户在未加入房间的情况下“旁听”并阅读房间中发布的消息,即为房间提供预览,是十分有用的功能。当与 访客访问 结合使用时,这一功能效果尤为明显。

房间预览通过 world_readable房间历史消息可见性 设置以及 GET /events 接口的特殊版本实现。

客户端行为

希望在未加入房间的情况下查看房间内容的客户端,应调用 GET /rooms/:room_id/initialSync,然后调用 GET /events。对于每一个希望查看的房间,客户端都需要并行执行此操作。

当然,客户端也可以调用其他接口,例如 GET /rooms/:room_id/messagesGET /search,以访问 /events 流以外的事件。

{{% http-api spec="client-server" api="peeking_events" anchor_base="peeking" %}}

服务器行为

对于尚未加入房间的客户端,服务器仅需返回这些事件:在事件发生时,房间状态存在 m.room.history_visibility 状态事件,且其 history_visibility 值为 world_readable

安全性注意事项

客户端可以向用户展示房间处于 world_readable 状态时,可能会向未加入房间的用户显示消息。通过此模块无法判断是否确有未加入的访客用户实际查看了房间中的事件,也无法列举或统计正在“旁听”的用户数量。