Setting up a websocket using Python aiohttp

  1. Execute on bash:
sudo apt install python3-env python3-pip -y
python -m venv .venv 
  1. Copy the following contents to app.py
from aiohttp import web

app = web.Application()

async def websocket_handler(request):

    ws = web.WebSocketResponse()
    await ws.prepare(request)

    async for msg in ws:
        if msg.type == aiohttp.WSMsgType.TEXT:
            if msg.data == 'close':
                await ws.close()
            else:
                await ws.send_str(msg.data + '/answer')
        elif msg.type == aiohttp.WSMsgType.ERROR:
            print('ws connection closed with exception %s' %
                  ws.exception())

    print('websocket connection closed')

    return ws

app.router.add_get("/", websocket_handler)
web.run_app(app,host="0.0.0.0", port=7331)

3. Execute application
```bash 
source .venv/bin/activate 
python app.py

or directly without environment active:

./venv/bin/python app.py