add web socket, fix after review