Added websocket based implementation