Почему бы нам не изменить свое мышление?Возьмите на себя нагрузку на клиента, а не на сервер, для набора.
После нажатия first , отправьте событие на сервер и запустите тайм-аут.Через 5 секунд мы скажем, что больше не печатаем.Если есть еще одно нажатие клавиши, мы стираем старое время ожидания и запускаем новое.Это гарантирует, что каждый раз, когда пользователь печатает последовательно, оно обновляется.
Если ваш пользователь перезагружает страницу или покидает ее, это проблема.Тогда они не печатают, но тайм-аут не сработает.Чтобы справиться с этим, я бы порекомендовал вам сделать две вещи.Во-первых, когда пользователь запрашивает новую страницу, всегда ставьте его статус not-typing
.Зачем?потому что, по крайней мере, в этот момент они не набирают текст, даже если открывают новую вкладку.Во-вторых, если пользователь покидает браузер и закрывается до того, как триггер перестал вводить текст, вы, возможно, захотите его почистить.Вероятно, вы могли бы запускать cron каждый час, и любой, кто старше 5 минут, все же говорит, что все еще печатает, но не печатает.