При подключении можно просить пользователя пройти
reCAPTCHA v3 (та, которая невидимая). Сам токен рекаптчи можно передавать в качестве GET-параметра во время подключения к сокет-серверу. Плюсы в том, что обычные пользователи не будут видеть никакую каптчу и им не нужно жать на «я не робот». Минусы: иногда возможны false positive, время соединения немного увеличивается, потому что вы на серверной стороне делаете запрос к рекаптче, чтобы верифицировать токен, да и инициализация рекаптчи в браузере тоже не мгновенная.
Пока каптча не пройдена, данное конкретное сединение не должно подключаться ни к каким комнатам, для него не должно слушаться никаких событий и так далее. Вся эта инициализация проходит только после того, как вы проверили каптчу.
Работает более или менее надёжно.
Если вы самостоятельно добавляете какие-то GET-параметры, чтобы типа «отличить» робота от неробота, не забывайте про то, что автору робота никто не мешает посмотреть исходники или сделать реверс-инжиниринг соединения и внести небольшие изменения в свой код. Фишка рекаптчи в том, что её сложно автоматизировать, и токены, которые она генерирует, всегда разные.