Соединение websocket с автобаном и скручено на питоне

Я пытаюсь использовать twiested с автобаном для подключения к серверу websocket

from autobahn.twisted.websocket import WebSocketClientProtocol


class OkcClient(WebSocketClientProtocol):
    def onOpen(self):
        #self.sendMessage(u"Hello, world!".encode('utf8'))
        self.sendMessage(u"{'event':'addChannel','channel':'ok_btcusd_future_ticker_this_week'}".encode('utf8'))
        self.sendMessage(u"{'event':'addChannel','channel':'ok_future_btcusd_kline_this_week_5min'}".encode('utf8'))

    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')))


import sys
from twisted.python import log
from twisted.internet import reactor
from autobahn.twisted.websocket import WebSocketClientFactory
log.startLogging(sys.stdout)
factory = WebSocketClientFactory("wss://real.okcoin.com:10440/websocket/okcoinapi")
factory.protocol = OkcClient

reactor.connectTCP("wss://real.okcoin.com/websocket/okcoinapi", 10440, factory)
reactor.run()

Но единственное, что я получаю от этого, - это сообщения:

2014-11-18 11:45:39+0000 [-] Log opened.
2014-11-18 11:45:51+0000 [-] Starting factory <autobahn.twisted.websocket.WebSocketClientFactory instance at 0x106a0ccf8>
2014-11-18 11:46:04+0000 [-] Stopping factory <autobahn.twisted.websocket.WebSocketClientFactory instance at 0x106a0ccf8>

Что бы я ни пробовал, фабрика закрывается, как только я reactor.run()


person jbssm    schedule 18.11.2014    source источник
comment
Вы когда-нибудь решали эту проблему? Если да, то как это было решено?   -  person Jaigus    schedule 03.08.2016
comment
Нет, я отказался от него и пробовал другие решения.   -  person jbssm    schedule 03.08.2016


Ответы (1)


reactor.connectTCP принимает в качестве первого аргумента IP-адрес (или имя хоста). Вы передали ему URI. Он запутался и решил, что это должно быть имя хоста, попытался разрешить его, потерпел неудачу и остановил фабрику клиентов.

Попробуйте передать real.okcoin.com вместо полного URI. Это может быть разрешено в IP-адрес (я предполагаю), и попытка подключения сможет продолжиться.

person Jean-Paul Calderone    schedule 19.11.2014
comment
Я пробовал использовать real.okcoin.com для reactor.connectTCP, и теперь он тоже сразу останавливается, но, по крайней мере, показывает: 2014-11-19 11:33:28+0000 [OkcClient,client] Stopping factory <autobahn.twisted.websocket.WebSocketClientFactory instance at 0x1091a95f0> Так что, похоже, дело пошло немного дальше. Но журналы мало что говорят о том, что происходит. - person jbssm; 19.11.2014
comment
Вы можете включить вывод отладки в Autobahn, как здесь: github.com/tavendo/AutobahnPython/blob/master/examples/twisted/ - person oberstet; 20.11.2014
comment
@jbssm кажется, что вы пытаетесь сделать безопасный WebSocket, что означает, что вам нужно использовать connectSSL (или конечные точки Twisted) .. посмотрите здесь: github.com/tavendo/AutobahnPython/blob/master/examples/twisted/ и здесь github.com/tavendo/AutobahnPython/blob/master/autobahn/autobahn/ - person oberstet; 20.11.2014