Крайне НЕ рекомендую использовать wss протокол для событий. События контракта через сокеты будут пропускаться.
Можно использовать такую функцию.
https://gist.github.com/RuslanMirov/73e2af0a7b9d5133584023372a705ffdФункция принимает номер блока, адресс контракта, abi контракта, название события, и через http протокол проверяет было ли данное событие в данном блоке или нет. Это более надежно.
Чтобы это работало вообще надежно, нужно проверять события с задержкой или возвращаться на несколько блоков и перепроверять.