Для чат-бота, который я реорганизую, не требуются блокировки для управления большей частью его состояния, веб-сайт, к которому он подключается через веб-сокет, регулирует сообщения, которые могут быть получены от обычных пользователей со скоростью 0,6 с, а озвученные пользователи - со скоростью 0,3 с, в то время как администраторы не имеют газа. Озвучен ли пользователь или администратор неизвестен до определенного момента после установления соединения; до этого каждый считался обычным пользователем.
В настоящее время я обрабатываю ограниченные сообщения, помещая блок react
для прослушивания сообщений в al oop, который завершается после принудительного закрытия соединения. Когда дроссель обновляется, я вызываю done
, чтобы войти в следующую итерацию, которая обновляет блок whenever
для подачи сообщений для отправки, чтобы иметь обновленный дроссель. Это ужасный, грубый код!
Что я могу сделать, чтобы (а) убедиться, что соединение начинается с дросселем 0,3 с, который можно использовать сразу после установления соединения через веб-сокет, (б) сделать возможным вызвать метод, который обновляет этот газ, когда это необходимо, и (c) не сохранять никакого состояния, связанного с этим газом (что может быть выведено другими способами)?
Редактировать: я забыл упомянуть об этом ранее, но существуют нерегулируемые сообщения для всех типов пользователей, а не только для администраторов.