make client wrapping reusable
add built-in websockets server