In most situations you would need a server for your example to work.
The difficulty is getting data from the game, to the viewers, in a way that doesn’t expose the broadcasters IP to viewers. Without a server, this pretty much limits you to requiring the broadcaster having a tab open with the Extension running, so that the Extension can connect to the game running on their machine, and broadcast data from the game on Extension PubSub (which is limited to 1msg per second, and 5KB per message).
With a sever though, the game can form an outbound connection to your server, rather than requiring it to listen to http or WS requests if you was doing it without a server. With that connection, the game can send as much data as it likes as it’s not controlled by Twitch. Once the data is on your server, you can then either broadcast it over Extension PubSub to viewers if it fits within the rate limit, or your server can act as a HTTPS API that viewers can poll for that data, or connect to with a websocket connection that data will be sent on. Having a server handle all of this would also mean it continues to function even if the broadcaster doesn’t have the Extension running themselves.