Подписка Graphene слушать на другом сервере - PullRequest
0 голосов
/ 30 мая 2020

Я новичок в подписках в графене и веб-сокетах. Моя подписка работает на 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())
...