Не удается подключиться к Poloniex
Я пытаюсь подключиться к Poloniex. Для подключения я использую WynthShop и этот код:
public class Program
{
public static void Main(string[] args)
{
var channelFactory = new DefaultWampChannelFactory();
var channel = channelFactory.CreateJsonChannel("wss://api.poloniex.com", "realm1");
channel.Open().GetAwaiter().GetResult();
var tickerSubject = channel.RealmProxy.Services.GetSubject("ticker");
var cancellationTokenSource = new CancellationTokenSource();
using (var subscr = tickerSubject.Subscribe(evt =>
{
var currencyPair = evt.Arguments[0].Deserialize<string>();
var last = evt.Arguments[1].Deserialize<decimal>();
Console.WriteLine($"Currencypair: {currencyPair}, Last: {last}");
}))
{
Console.WriteLine("Press a key to exit");
Console.ReadKey();
cancellationTokenSource.Cancel();
}
}
}
Но, к сожалению, я получаю сообщение об ошибке "Невозможно подключиться к удаленному серверу". Может кто знает как решить проблему со связью. Также я попытался использовать следующий код, но также не удается подключиться:
public class Program
{
static void Main(string[] args)
{
var channelFactory = new DefaultWampChannelFactory();
var channel = channelFactory.CreateJsonChannel("wss://api.poloniex.com", "realm1");
Func<Task> connect = async () =>
{
//await Task.Delay(30000);
await channel.Open();
var tickerSubject = channel.RealmProxy.Services.GetSubject("ticker");
var subscription = tickerSubject.Subscribe(evt =>
{
var currencyPair = evt.Arguments[0].Deserialize<string>();
var last = evt.Arguments[1].Deserialize<decimal>();
Console.WriteLine($"Currencypair: {currencyPair}, Last: {last}");
},
ex => {
Console.WriteLine($"Oh no! {ex}");
});
};
WampChannelReconnector reconnector =
new WampChannelReconnector(channel, connect);
reconnector.Start();
Console.WriteLine("Press a key to exit");
Console.ReadKey();
}
}
2 ответа
Я сам создаю websocket, указав версии SSL/TLS, которые могу поддерживать
public void Connect()
{
_channel = new DefaultWampChannelFactory().ConnectToRealm(_realm)
.WebSocketTransport(prtcl => CreateWebSocket(prtcl, _url))
.JsonSerialization()
.Build();
//.CreateJsonChannel(_url, _realm);
//_channel.RealmProxy.
_channel.RealmProxy.Monitor.ConnectionBroken += (sender, args) =>
{
_logger.WriteError(string.Format("ConnectionError -> From connection error event WssUrl : {0} , Realm : {1}", _url, _realm), new ArgumentException(args.Details != null ? args.Details.Message : "NO Details" ));
};
_channel.RealmProxy.Monitor.ConnectionError += (sender, args) =>
{
_logger.WriteError(string.Format("ConnectionError -> From connection error event WssUrl : {0} , Realm : {1}",_url,_realm), args.Exception);
};
_channel.RealmProxy.Monitor.ConnectionEstablished += (sender, args) =>
{
string info = string.Format("from ConnectionEstablished event -> WssUrl : {0} , Realm : {1}", _url, _realm);
OnConnected(info);
};
_reconnector = new WampChannelReconnector(_channel, ConnectInternal);
_reconnector.Start();
}
private static WebSocket CreateWebSocket(string subprotocolName, string serverAddress)
{
WebSocket result = new WebSocket(serverAddress,
subprotocolName, null, null, string.Empty, string.Empty, WebSocketVersion.None,null,SslProtocols.Ssl3 | SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12, 4096);
result.AutoSendPingInterval = 10;
return result;
}
Когда вы читаете документацию по API, вы можете прочитать:
Push API
Лучший способ получения публичных обновлений данных на рынках - через push API, который проталкивает живые тикеры, книги заказов, сделки и обновления Trollbox через WebSockets с использованием протокола WAMP. Чтобы использовать push API, подключитесь к wss://api.poloniex.com и подпишитесь на нужный канал.
WAMP = W eb A Прикладная программа, использующая протокол
Таким образом, вам придется выбрать C# lib, совместимый с протоколом WAMP, вы можете посмотреть здесь, чтобы найти совместимую реализацию.
В вашем случае вы можете использовать WampSharp, который совместим с C#