C# 无法使包装程序binance.net正常工作
我已经从安装了包装器 使用他们的示例代码,我的应用程序中有以下内容:C# 无法使包装程序binance.net正常工作,c#,.net-core,websocket,binance,C#,.net Core,Websocket,Binance,我已经从安装了包装器 使用他们的示例代码,我的应用程序中有以下内容: using System; using System.Collections.Generic; using System.IO; using System.Linq; using Binance.Net; using Binance.Net.Enums; using Binance.Net.Objects; using Binance.Net.Objects.Spot; using CryptoExchange.Net.Aut
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Binance.Net;
using Binance.Net.Enums;
using Binance.Net.Objects;
using Binance.Net.Objects.Spot;
using CryptoExchange.Net.Authentication;
using CryptoExchange.Net.Logging;
namespace binance_stream_user_data_updates
{
class Program
{
static void Main(string[] args)
{
var client = new BinanceClient(new BinanceClientOptions{
ApiCredentials = new ApiCredentials("key","secret"),
BaseAddress = "https://testnet.binance.vision",
LogVerbosity = LogVerbosity.Debug,
LogWriters = new List<TextWriter> { Console.Out }
});
var startResult = client.Spot.UserStream.StartUserStream();
if(!startResult.Success)
throw new Exception($"Failed to start user stream: {startResult.Error}");
var socketClient = new BinanceSocketClient();
socketClient.Spot.SubscribeToUserDataUpdates(startResult.Data,
null,
data => {
Console.WriteLine(data.Orders);
},
null,
null);
Console.ReadLine();
socketClient.UnsubscribeAll();
}
}
}
然后我下订单
职位
当我这样做时,从上述代码运行的websocket不会输出任何内容。你知道我做错了什么吗?你的
socketClient
在订阅后立即从活动中取消订阅
你需要交换线路
socketClient.UnsubscribeAll();
Console.ReadLine();
要订阅事件,直到从控制台读取该行。必须执行一些操作才能获得正确的结果:
BinanceSocketClient
async static Task Main(string[] args)
{
var client = new BinanceClient(new BinanceClientOptions
{
ApiCredentials = new ApiCredentials("key", "secret"),
BaseAddress = "https://testnet.binance.vision",
LogVerbosity = LogVerbosity.Debug,
LogWriters = new List<TextWriter> { Console.Out }
});
var startResult = client.Spot.UserStream.StartUserStream();
if (!startResult.Success)
throw new Exception($"Failed to start user stream: {startResult.Error}");
var socketClient = new BinanceSocketClient(new BinanceSocketClientOptions
{
ApiCredentials = new ApiCredentials("key", "secret"),
BaseAddress = "wss://testnet.binance.vision",
LogVerbosity = LogVerbosity.Debug,
LogWriters = new List<TextWriter> { Console.Out }
});
var stop = false;
var subscribeResponse = socketClient.Spot.SubscribeToUserDataUpdates(
startResult.Data,
data =>
{
stop = true;
Console.WriteLine($"Order updated: {data}");
},
data =>
{
stop = true;
Console.WriteLine($"OCO Orders updated: {data.Orders}");
},
null,
data =>
{
stop = true;
Console.WriteLine($"Balance updated: ${data}");
});
if (subscribeResponse.Success)
{
while (!stop)
{
await Task.Delay(100);
}
}
await socketClient.UnsubscribeAll();
}
异步静态任务主(字符串[]args)
{
var client=newbinanceclient(newbinanceclientoptions
{
ApiCredentials=新的ApiCredentials(“密钥”、“秘密”),
基本地址=”https://testnet.binance.vision",
LogVerbosity=LogVerbosity.Debug,
LogWriters=新列表{Console.Out}
});
var startResult=client.Spot.UserStream.StartUserStream();
如果(!startResult.Success)
抛出新异常($“无法启动用户流:{startResult.Error}”);
var socketClient=new BinanceSocketClient(new BinanceSocketClientOptions
{
ApiCredentials=新的ApiCredentials(“密钥”、“秘密”),
基本地址=”wss://testnet.binance.vision",
LogVerbosity=LogVerbosity.Debug,
LogWriters=新列表{Console.Out}
});
var-stop=false;
var subscriberResponse=socketClient.Spot.subscriberTouseRDataupdates(
startResult.数据,
数据=>
{
停止=真;
WriteLine($“订单更新:{data}”);
},
数据=>
{
停止=真;
WriteLine($“OCO订单更新:{data.Orders}”);
},
无效的
数据=>
{
停止=真;
WriteLine($“余额更新:${data}”);
});
如果(订阅响应成功)
{
当(!停止)
{
等待任务。延迟(100);
}
}
等待socketClient.UnsubscribeAll();
}
在提供的代码中,使用testnet URL创建带有选项的
BinanceClient
,然后创建带有默认选项的BinanceSocketClient
,默认选项将使用wss://stream.binance.com:9443/
作为基本URL
但是如果使用测试网络,则必须使用相应的wss://testnet.binance.vision/
web套接字URL;否则,您将在真实网络中订阅一个非功能listenKey,它不会通知您测试网络中发生的订单更新
只需像这样创建BinanceSocketClient
实例:
socketClient = new BinanceSocketClient(new BinanceSocketClientOptions
{
BaseAddress = "wss://testnet.binance.vision",
LogWriters = new List<TextWriter> { Console.Out }
});
socketClient=newbinancesocketclient(newbinancesocketclientoptions
{
基本地址=”wss://testnet.binance.vision",
LogWriters=新列表{Console.Out}
});
交换了各行,在我发布订单时,似乎对输出没有影响。看起来只有在余额发生变化时才会更新。请参阅。是的,我使用此命令api端点“POST”更改了平衡。我可以在登录binance时看到平衡的更改,但上面的代码没有输出任何内容。我使用的是.NET 3.1。“任务”似乎直到.NET4才存在。对示例代码进行了一些调整,现在可以使用了。谢谢
socketClient = new BinanceSocketClient(new BinanceSocketClientOptions
{
BaseAddress = "wss://testnet.binance.vision",
LogWriters = new List<TextWriter> { Console.Out }
});