如何使用 Jawampa(Java WAMP 实现)订阅事件

How to use Jawampa (Java WAMP implementation) to subcribe to an event

我想使用 poloniex API。 https://poloniex.com/support/api/

到目前为止,我制作了 Jawampa ( https://github.com/Matthias247/jawampa ) 运行 IntelliJ。

我的第一个问题是,如何登录成功? (Jawampa 的文档没有帮助)

我得到了 API 密钥和秘密。我必须在 Jawampa 的构建器中使用哪些功能:

withRealm 有角色 withConnectorProvider withConnectionConfiguration 连载 withStrictUriValidation 与AuthId withAuth方法 withObjectMapper

到目前为止我有这段代码

     try {
        WampClientBuilder builder = new WampClientBuilder();
        builder.withConnectorProvider(connectorProvider)
                .withUri("wss://api.poloniex.com")
                .withAuthId("APIKEY")
                .withRealm("realm2")
                .withInfiniteReconnects()
                .withReconnectInterval(1, TimeUnit.SECONDS);
        client1 = builder.build();
    } catch (Exception e) {
        e.printStackTrace();
        return;
    }

wss://api.poloniex.com 是否正确,或者我应该为该客户端使用 wss://api.poloniex.com/returnTicker?

我是否必须始终为每个 URI 创建一个新客户端?

在此先感谢您。

  1. 我的第一个问题是,如何登录成功?

您无需通过 WAMP 协议访问 Poloniex Push API 进行身份验证。 Push API 方法是 public,因此您不必提供 API 密钥和密码。只需连接到 wss://api.poloniex.com 并订阅所需的提要(Ticker、Order Book and Trades、Trollbox)。

顺便说一句,您只需要为交易 API 方法提供 API 密钥。而这个 Secret 是用来对 POST 数据进行签名的。

  1. 我必须在 Jawampa 的构建器中使用哪些功能:

这就是您连接到推送的方式 API:

    WampClient client;
    try {
        WampClientBuilder builder = new WampClientBuilder();
        IWampConnectorProvider connectorProvider = new NettyWampClientConnectorProvider();
        builder.withConnectorProvider(connectorProvider)
                .withUri("wss://api.poloniex.com")
                .withRealm("realm1")
                .withInfiniteReconnects()
                .withReconnectInterval(5, TimeUnit.SECONDS);
        client = builder.build();

    } catch (Exception e) {
        return;
    }

一旦您的客户端连接上,您就可以订阅这样的提要:

    client.statusChanged().subscribe(new Action1<WampClient.State>() {
        @Override
        public void call(WampClient.State t1) {
            if (t1 instanceof WampClient.ConnectedState) {
                subscription = client.makeSubscription("trollbox")
                        .subscribe((s) -> { System.out.println(s.arguments()); }
            }
        }
    });
    client.open();
  1. wss://api.poloniex.com 正确还是我应该使用 wss://api.poloniex.com/returnTicker 对于那个客户?

wss://api.poloniex.com 是正确的。此外,returnTicker 属于 Public API 并且通过 HTTP GET 请求访问。

  1. 我是否必须始终为每个 URI 创建一个新客户端?

关于推送 API,将客户端连接到 wss://api.poloniex.com 后,您可以使用此客户端订阅多个提要。例如:

client.statusChanged().subscribe(new Action1<WampClient.State>() {
        @Override
        public void call(WampClient.State t1) {
            if (t1 instanceof WampClient.ConnectedState) {
                client.makeSubscription("trollbox")
                        .subscribe((s) -> { System.out.println(s.arguments()); });
                client.makeSubscription("ticker")
                        .subscribe((s) -> { System.out.println(s.arguments()); });
            }
        }
    });

然而,根据 Jawampa 文档:

After a WampClient was closed it can not be reopened again. Instead of this a new instance of the WampClient should be created if necessary.