move to signalr
canonical chat