summaryrefslogtreecommitdiffhomepage
path: root/test/python/websockets/subprotocol/asgi.py
blob: 92263dd77a71a976615200cca5ac76c3b40da8ca (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
async def application(scope, receive, send):
    assert scope['type'] == 'websocket'

    while True:
        m = await receive()
        if m['type'] == 'websocket.connect':
            subprotocols = scope['subprotocols']

            await send({
              'type': 'websocket.accept',
              'headers': [
                  (b'x-subprotocols', str(subprotocols).encode()),
              ],
              'subprotocol': subprotocols[0],
            })

        if m['type'] == 'websocket.receive':
            await send({
              'type': 'websocket.send',
              'bytes': m.get('bytes', None),
              'text': m.get('text', None),
            })

        if m['type'] == 'websocket.disconnect':
            break;