1.4 KiB
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" %}}
安全性注意事项
客户端可能不希望通知房间内的所有人他们正在输入,而只通知房间内特定的用户。