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

1.4 KiB

输入通知

用户可能希望在有人在房间中输入时收到通知。这可以通过输入通知实现。这些属于临时事件,因此不会成为事件图的一部分。输入通知的作用范围仅限于某个房间。

事件

{{% event event="m.typing" %}}

客户端行为

当客户端接收到 m.typing 事件时,必须使用该事件中的用户 ID 列表来替换其当前所知的正在输入的所有用户。其原因在于服务器不会记住那些当前未在输入的用户,因为该列表增长得很快。客户端应将所有未在此列表中的用户 ID 标记为未输入状态。

建议客户端存储一个表示用户是否正在输入的 boolean 值。当该值为 true 时,应每隔 N 秒定时触发一次定时器,发送一次输入状态的 HTTP 请求。N 推荐值为 20-30 秒以内。客户端应不断重新发送此请求,以持续告知服务器用户仍在输入中。由于后续请求会取代旧的请求,建议在预期超时前留有 5 秒的安全余量。当用户停止输入时,将 boolean 状态变为 false 的变化应触发另一次 HTTP 请求,以告知服务器用户已停止输入。

{{% http-api spec="client-server" api="typing" %}}

安全性注意事项

客户端可能不希望通知房间内的所有人他们正在输入,而只通知房间内特定的用户。