Проблемы с подключением к 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