SignalR would still be better here, but this gets us a lot of the way