Sim, mas engraçado que fui testar o following._ e alguns relays já não conectavam mais em pouco tempo de uso.
Discussion
Abre uma subscription só pra aplicação com todos os filtros que deve funcionar, se um relay percebe que um mesmo IP está abrindo várias subscription com id diferentes, provavelmente irá bloquear mesmo, subscriptions com id diferentes são a mesma coisa que sessões de login, imagine que um mesmo IP tá fazendo vários login em sua aplicação..
Então abre somente uma subscription para a aplicação algo como:
const filters = [
{ kinds: [3], authors:[user.pubkey] }, // friend
{ kinds: [0], authors:[user.pubkey] }, // profile
.....
]
ndk.subscriobe(filters,...)
É isso ou reutilizar o mesmo id sempre que abrir uma subscription, salva um id gerado na hora, e usa isso como id da subscription do usuário, daí sempre que abrir uma subscription usa o mesmo id.
Isso deve resolver, lembre-se também de fechar sempre a subscription corretamente etc.
Ah e prefira sempre usar fetchEvent, ou fetchEvent se for pegar eventos esporadicamente na aplicação. Pros casos onde fetchEvent(s) não listar corretamente, como eventos de comentário etc, daí você usa subscription e sempre buscando reutilizar o mesmo id.
Onde tu arruma esse id?
Seu projeto é Open no Github? Posso tentar ajudar quando tiver um tempo livre. Não sei como gerencia o id no NDK, mas quando você faz um pedido pro relays você passa um id de subscription.
No nip1 tem uma definição de como buscar os eventos, e eu sempre presumo que para um mesmo IP, do ponto de vista do relay deve ser sempre o mesmo subscription_id.

Vê se você consegue gerenciar o id da subscription em uma NDKSubscription
Entendi, imaginei q era esse msm. Vlw! Logo vou subir o novo norkut no github.