httpout supports WebSocket with no complexity for you to use.
The websocket object will be None on requests that are not considered a WebSocket type, or the WebSocket support is disabled with --no-ws.
Example:
# ws.py
from httpout import run, response, websocket
if websocket is None:
response.set_status(400, 'Bad Request')
print('Not a websocket request')
exit()
async def main():
async for message in websocket:
await websocket.send(f'You said: {message}')
run(main())