2017-11-06 3 views
2

Ich versuche eine Verbindung zu Poloniex herzustellen. Um eine Verbindung, ich bin mit WynthShop und diesen Code:Verbindung mit Poloniex nicht möglich

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(); 
     } 
    } 
} 

Aber leider bekomme ich die Fehlermeldung „konnte keine Verbindung zum Remote-Server verbinden“. Vielleicht kann jemand das Problem mit der Verbindung lösen. Ich habe auch versucht, den folgenden Code zu verwenden, aber nicht auch verbinden:

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(); 
    } 
} 
+0

Was ist die innere Ausnahme unterstützen? Für mich war es die SSL/TLS-Version, die ich als Client unterstütze –

Antwort

-1

Wenn Sie die API doc lesen, können Sie lesen:

Push-API

Der beste Weg, Öffentlichkeit zu bekommen Datenaktualisierungen auf Märkten erfolgen über die Push-API, die Live-Ticker-, Orderbuch-, Handels- und Trollbox-Updates über WebSockets mithilfe des WAMP-Protokolls überträgt. Um die Push-API zu verwenden, verbinden Sie sich mit wss: //api.poloniex.com und abonnieren Sie den gewünschten Feed.

WAMP = Die W eb A pplikation M essaging P rotokoll

So müssen Sie eine C# lib kompatibel mit WAMP Protokoll gewählt haben, können nehmen Sie eine look here zu finden eine comptable Implementierung.

In Ihrem Fall können Sie WampSharp verwenden, die mit C# kompatibel ist

0

ich die websocket erstellen selbst das Festlegen von SSL/TLS-Versionen i

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; 
} 
Verwandte Themen