Poloniex 和网络套接字

Poloniex & websockets

===简单而简短===

这些天(2018 年 1 月)是否有人有通过 WAMP 与 Poloniex 对话的工作应用程序?

===更具体===

我使用了几个信息源来使用组合使其工作:autobahn-cpp & C++Windows10OS。 我能够连接到 wss://api.poloniex.com, realm1。另外,我能够订阅并获得订阅 ID。但是即使一切都建立了,我也没有得到任何事件。

===研究===

在网络研究期间,我看到了很多有争议的信息:

1. 声称应该使用 wss://api2.poloniex.com,频道名称实际上是数字 -

2. 这个答案给了我基本代码,但我得到的不仅仅是连接,也通过遵循这个答案 - wss://api.poloniex.com 是正确的地址 -

3. 我看到 post(抱歉,丢失了 link),有人评论说 websockets 的实现在 poloniex 上基本上是坏的。他们在 6 个月前 posted。

===规格===

1. Windows 10

2. Autobahn-Cpp

3. wss://api.poloniex.com:443;领域 1

4. 订阅不同:ticker、BTC_ETH、148、1002等。

5. 我从

获得的源代码

===也会有帮助===

  1. 有什么方法可以获取所有有效订阅,或者可能是那些拥有超过 0 个订阅者的订阅?我的意思是,WAMP 有办法做到这一点吗?

  2. Autobahn-Cpp 和 poloniex 组合是否存在任何已知问题?

  3. 是否有任何更简单的方法可以在其他地方测试 WAMP 以确保高速公路不是问题?与接受 WAMP websocket 通信的任何其他有据可查且受支持的在线项目一样吗?

我可以从 wss://api2.poloniex.com 使用 python3 接收正确的订单簿数据 但有时通道 1002 可能会停止发送新的报价信息。

Poloniex 中的 websockets 似乎不稳定。因此,至少现在我可以停止让 Autobahn-Cpp 使用它并继续前进的尝试。

wss://api.poloniex.com:443 ; realm1

这可能是问题所在,因为我一直在使用 api2,这里是有效的代码,并且在过去两个季度一直有效 non-stop。它在 python 中,但应该很容易移植到 C++。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import websocket
import json

def on_error(ws, error):
    print(error)

def on_close(ws):
    print("### closed ###")
    connection.close()

def on_open(ws):
    print("ONOPEN")
    ws.send(json.dumps({'command':'subscribe','channel':'BTC_ETH'}))

def on_message(ws, message):
    message = json.loads(message)
    print(message)

websocket.enableTrace(True)
ws = websocket.WebSocketApp("wss://api2.poloniex.com/",
                              on_message = on_message,
                              on_error = on_error,
                              on_close = on_close)
ws.on_open = on_open
ws.run_forever()

代码差不多self-explanatory(你可以在Poloniex API网站上查看所有channels/pairs),只需保存并运行在终端

python3 fileName.py

应该在控制台输出上为您提供 BTCETH 原始订单流和交易。

玩 message/subscriptions 然后您可以随心所欲地使用它。