summaryrefslogtreecommitdiffhomepage
path: root/test/python/websockets/subprotocol/asgi.py
blob: 0385bb9d5ad5b9c6a3c0ba92744270f71420189f (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
26
27
28
29
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