Spectate Server design

For my project I would like to view what player A sees (aka his camera viewport) on my machine B. Basically a spectate function, but I am having issues figuring out good design.

Design 1)

A (player) is the server, so there is no lag, but they have to portforward so my client (machine B) can connect and spectate it

Design 2)

(B is the server, A is the client) - will introduce unnecessary lag

Is there any simple way to do spectating over IP without much hassle for the client?