Проблемы с подключением к Kucoin API Websocket

У меня проблемы с подключением к Kucoin Websocket API, REST API работает с клиентом для подключения и получения данных, но когда я пытаюсь получить данные из Websocket API, он не отображает данные и остается в спящем цикле. Вот код

      import asyncio, json, websockets
from kucoin.client import Client
from kucoin.asyncio import KucoinSocketManager


api_key = <api_key>
api_secret = <api_secret>
api_pass = <api_pass>


async def main():
    global loop

    # callback function that receives messages from the socket
    async def handle_evt(msg):
        global data
        msg['topic'] == '/market/ticker:ETH-USDT'
        data = msg["data"]

    client = Client(api_key, api_secret, api_pass)

    ksm = await KucoinSocketManager.create(loop, client, handle_evt)

    # for private topics such as '/account/balance' pass private=True
    ksm_private = await KucoinSocketManager.create(loop, client, handle_evt, private=True)



    await ksm.subscribe('/market/ticker:ETH-USDT')



    while True:
        print("sleeping to keep loop open")
        await asyncio.sleep(20, loop=loop)


loop = asyncio.get_event_loop()
loop.run_until_complete(main())

Любая помощь приветствуется!! Спасибо!

1 ответ

И я смог сделать запрос через WebSocket, но не могу сделать запрос на открытые заказы. Для запроса WebSocket вам сначала нужно получить токен и только потом сделать запрос. В C # код выглядит примерно так

       > public static async Task GetWebSocket()
>     {
>       HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, new
> Uri("https://api.kucoin.com/api/v1/bullet-public"));
>       HttpResponseMessage response = await httpClient.SendAsync(request).ConfigureAwait(false);
>       string message = await response.Content.ReadAsStringAsync();
>       RootWebSocket rws = JsonConvert.DeserializeObject<RootWebSocket>(message);
>       var rwsdata = rws.data;
>       string token = rwsdata.token;
>       string urlWebSocket = rwsdata.instanceServers[0].endpoint;     
>       ws = new ClientWebSocket();
>       string s = urlWebSocket + "?token=" + token;
>       await ws.ConnectAsync(new Uri(s), CancellationToken.None);
>       if (ws.State != WebSocketState.Open) { WriteLine("ws.State != WebSocketState.Open"); ReadKey(); }
>     } public static async Task<object> GetWebSocketTickers(KUCOIN kucoin)
>     {
>       if (ws == null) await GetWebSocket();
>       //string str_send = JsonConvert.SerializeObject(new { type = "subscribe", topic = "/market/ticker:BTC-USDT,ETH-USDT",
> privateChannel = false, response = true });
>       string pairs = "/market/level2:";
>       int i = 0;
>       foreach (var v in hashSetWorkForArbitrage) { if (i++ != 0) pairs += ','; pairs += v; }//"/market/level2:BTC-USDT,ETH-UST"
>       string str_send = JsonConvert.SerializeObject(new { type = "subscribe", topic = pairs, privateChannel = false, response = true
> });
>       var buffer_send = Encoding.UTF8.GetBytes(str_send);
>       await ws.SendAsync(new ArraySegment<byte>(buffer_send), WebSocketMessageType.Text, true, CancellationToken.None);
>       byte[] buffer = new byte[1024];
>       DateTime dtNow = DateTime.Now;
> 
>       for (ulong iWhile = 0; ; iWhile++)
>       {
>         var result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
>         var messages = Encoding.UTF8.GetString(buffer, 0, result.Count);
>         Console.WriteLine(messages); } }

Вы можете показать мне свой код REST? Моя электронная почта a-dinozavr@yandex.ru

Другие вопросы по тегам