首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法连接到Poloniex

无法连接到Poloniex
EN

Stack Overflow用户
提问于 2017-11-06 18:37:25
回答 2查看 435关注 0票数 2

我在试着和Poloniex联系。为了连接,我使用了WynthShop和下面的代码:

代码语言:javascript
复制
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();
        }
    }
}

但不幸的是,我得到的错误是“无法连接到远程服务器”。也许有人知道如何解决与连接的问题。此外,我还尝试使用以下代码,但也无法连接:

代码语言:javascript
复制
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();
    }
}
EN

回答 2

Stack Overflow用户

发布于 2018-01-23 21:12:51

我自己创建websocket,指定我可以支持的SSL/TLS版本

代码语言:javascript
复制
 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;
 }
票数 0
EN

Stack Overflow用户

发布于 2017-11-26 02:56:10

当您阅读API doc时,您可以阅读:

推流接口

在市场上获取公共数据更新的最好方法是通过push API,它使用WAMP协议通过WebSockets 推送实时报价器、订单簿、交易和巨无霸更新。要使用推送API,请连接到wss://api.poloniex.com并订阅所需的提要。

WAMP = The Web AA Messaging P协议

所以你必须选择一个与WAMP协议兼容的C#库,你可以选择一个look here来找到一个兼容的实现。

在您的情况下,您可以使用与C#兼容的WampSharp

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47134929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档