Best way to implement real-time data updates with Next.js App Router after a mutation?

I'm using Next.js with the App Router and want to ensure that all connected clients refetch the latest data after a mutation.

router.refresh() works for the current client, but doesn't affect others. revalidatePath('/') regenerates the page, but the user has to revisit it to see updates.

Would setting up a Pub/Sub system with Redis or Upstash be a good approach to notify clients and force them to refetch data in real time?

Or maybe there is more straightforward solution i'm not seeing right now, thanks!