Я пытаюсь подключиться к wss://api.poloniex.com и подписаться на тикер. Я не могу найти какой-либо рабочий пример в python. Я попытался использовать autobahn/twisted и websocket-client 0.32.0.
Целью этого является получение данных в режиме реального времени и сохранение их в базе данных mysql.
До сих пор я пытался использовать примеры, представленные в документации библиотеки. Они работают для localhost или тестового сервера, но если я перейду на wss://api.poloniex.com, я получаю кучу ошибок.
вот моя попытка использования websocket-client 0.32.0:
from websocket import create_connection
ws = create_connection("wss://api.poloniex.com")
ws.send("ticker")
result = ws.recv()
print "Received '%s'" % result
ws.close()
и это использует autobahn/twisted:
from autobahn.twisted.websocket import WebSocketClientProtocol
from autobahn.twisted.websocket import WebSocketClientFactory
class MyClientProtocol(WebSocketClientProtocol):
def onConnect(self, response):
print("Server connected: {0}".format(response.peer))
def onOpen(self):
print("WebSocket connection open.")
def hello():
self.sendMessage(u"ticker".encode('utf8'))
self.sendMessage(b"\x00\x01\x03\x04", isBinary=True)
self.factory.reactor.callLater(1, hello)
# start sending messages every second ..
hello()
def onMessage(self, payload, isBinary):
if isBinary:
print("Binary message received: {0} bytes".format(len(payload)))
else:
print("Text message received: {0}".format(payload.decode('utf8')))
def onClose(self, wasClean, code, reason):
print("WebSocket connection closed: {0}".format(reason))
if __name__ == '__main__':
import sys
from twisted.python import log
from twisted.internet import reactor
log.startLogging(sys.stdout)
factory = WebSocketClientFactory("wss://api.poloniex.com", debug=False)
factory.protocol = MyClientProtocol
reactor.connectTCP("wss://api.poloniex.com", 9000, factory)
reactor.run()
Весьма простой, но простой пример, показывающий, как подключиться и подписаться на websocket push api, используя любую библиотеку python, будет с благодарностью.