Added a reusable websocket component