Além disso, parece que, quando um usuário faz logout, todas as assinaturas de push são excluídas. Portanto, se um usuário estiver logado em vários dispositivos (celular, navegador, tablet) e fizer logout de um dispositivo/sessão, isso impede que os outros dispositivos recebam notificações, pois suas assinaturas de push são excluídas.
Menciono isso porque está relacionado ao conhecimento de qual assinatura precisa ser substituída durante a renovação e qual assinatura deve ser excluída ao fazer logout.
Bem, eu acabei de ser desconectado do Meta hoje e, após fazer login, recebi uma notificação push sobre sua postagem… A menos que isso só ocorra no caminho de login iniciado pelo usuário
Quando um usuário retorna ao fórum (ou faz login), as assinaturas de push do navegador são reenviadas e recriadas. No entanto, se você fez logout, elas são excluídas e nenhuma notificação push será entregue até que o usuário acesse o fórum a partir daquele dispositivo.
Isso não contradiz o que você afirmou, já que parece que você recebeu a notificação push após fazer login.
A Push API possui uma função unsubscribe para invalidar a assinatura de push:
No logout, invocaríamos isso (no lado do cliente), o que tornaria essa assinatura inválida no servidor sem afetar outras assinaturas.
Na verdade, o cliente já possui uma função unsubscribePushNotification que faz isso nas preferências de “Notificações em Tempo Real”. Talvez a solução seja invocar isso no logout, no lado do cliente, se as Notificações em Tempo Real estiverem habilitadas. Provavelmente é uma boa prática revogar as chaves de assinatura no lado do cliente em vez de apenas excluí-las do servidor.