summaryrefslogblamecommitdiffhomepage
path: root/test/python/websockets/subprotocol/asgi.py
blob: 0385bb9d5ad5b9c6a3c0ba92744270f71420189f (plain) (tree)
1
2
3
4
5
6
7
8







                                                








                                                                        

                                            






                                                  

                                               
                 
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