From 68e9578611ca586301e979bac34e62afa2d00ed4 Mon Sep 17 00:00:00 2001 From: Jens Klein Date: Fri, 13 Jan 2023 17:15:50 +0100 Subject: [PATCH] Added https://www.npmjs.com/package/graphql-transport-ws ws protocol to support server impl --- python_graphql_client/graphql_client.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/python_graphql_client/graphql_client.py b/python_graphql_client/graphql_client.py index 1d3d104..4ecce25 100644 --- a/python_graphql_client/graphql_client.py +++ b/python_graphql_client/graphql_client.py @@ -82,6 +82,7 @@ async def subscribe( operation_name: str = None, headers: dict = {}, init_payload: dict = {}, + ws_subprotocol: str = "graphql-ws", ): """Make asynchronous request for GraphQL subscription.""" connection_init_message = json.dumps( @@ -91,13 +92,19 @@ async def subscribe( request_body = self.__request_body( query=query, variables=variables, operation_name=operation_name ) - request_message = json.dumps( - {"type": "start", "id": "1", "payload": request_body} - ) + + if ws_subprotocol == "graphql-ws": + protocol_specific_request = {"type": "start", "id": "1", "payload": request_body} + elif ws_subprotocol == "graphql-transport-ws": + protocol_specific_request = {"type": "subscribe", "id": "1", "payload": request_body} + else: + raise ValueError(f"Unknown subprotocol {ws_subprotocol}") + + request_message = json.dumps(protocol_specific_request) async with websockets.connect( self.endpoint, - subprotocols=["graphql-ws"], + subprotocols=[ws_subprotocol], extra_headers={**self.headers, **headers}, ) as websocket: await websocket.send(connection_init_message)