Я новичок в подписках в графене и веб-сокетах. Моя подписка работает на localhost: 8089 (до 10000000). И у меня есть клиентский веб-сокет, который подключается к URL-адресу подписки, и мне нужно получить данные, которые дает моя подписка. Что мне не хватает?
schema.py
import random
import asyncio
import graphene
class Query(graphene.ObjectType):
base = graphene.String()
class RandomType(graphene.ObjectType):
seconds = graphene.Int()
random_int = graphene.Int()
class Subscription(graphene.ObjectType):
count_seconds = graphene.Float(up_to=graphene.Int())
random_int = graphene.Field(RandomType)
async def resolve_count_seconds(root, info, up_to=5):
for i in range(up_to):
print("YIELD SECOND", i)
yield i
await asyncio.sleep(1.)
yield up_to
async def resolve_random_int(root, info):
i = 0
while True:
yield RandomType(seconds=i, random_int=random.randint(0, 500))
await asyncio.sleep(1.)
i += 1
schema = graphene.Schema(query=Query, subscription=Subscription)
clent.py
import asyncio
import websockets
async def start_listen():
uri = "ws://0.0.0.0:8089/subscriptions"
async with websockets.connect(uri) as websocket:
print('sdsdsa')
greeting = await websocket.recv()
print(f"< {greeting}")
asyncio.get_event_loop().run_until_complete(start_listen())