2017-02-24 9 views
3

Poloniexはすべてのメッセージを私のソケットに返しません。私は、次のコードでメッセージを読み、時々私は、連続的なメッセージ番号を取得し、時には不足している10件のメッセージのようにあります。誰もがよりよい解決策を知っていPoloniex TrollboxでPython autbahnや他のソケットモジュールを使ってメッセージを読む?

from autobahn.asyncio.wamp import ApplicationSession 
from autobahn.asyncio.wamp import ApplicationRunner 
from asyncio import coroutine 

class PoloniexComponent(ApplicationSession): 
    def onConnect(self): 
     self.join(self.config.realm) 

    @coroutine 
    def onJoin(self, details): 
     def onTrollbox(*args): 

      print("type: ", args[0]) 
      print("message_number: ", args[1]) 
      print("user_name: ", args[2]) 
      print("message: ", args[3]) 
      print("reputation: ", args[4]) 

     try: 
      yield from self.subscribe(onTrollbox, 'trollbox') 
     except Exception as e: 
      print("Could not subscribe to topic:", e) 

runner = ApplicationRunner("wss://api.poloniex.com", "realm1") 
runner.run(PoloniexComponent) 

?私はこの1つを試してみましたが、それがすべてでは動作しません:あなたはここにこのコードを確認することができます私が作った

from websocket import create_connection 
ws = create_connection("wss://api.poloniex.com") 
ws.send("trollbox") 
result = ws.recv() 
print "Received '%s'" % result 
ws.close() 

答えて

6

は、ソリューションです:

これらの行方不明のメッセージがWAMP APIで時々起こるかもしれません。これは、ルーティングソフトウェアに固有のスケーラビリティの問題が原因であり、Poloniexはpure WebSockets API(現在はWebインターフェイスで使用されていますが、ドキュメントが不足しています)で取り組んでいます。新しいwebsocketサーバーのURLはwss://api2.poloniex.com:443で、メッセージを送信する必要があるトロルボックスメッセージには'{"command" : "subscribe", "channel" : 1001}'と接続します。ここで

は、サンプルコードで、で動作するようにはるかに簡単です:

from websocket import create_connection 
import json 

ws = create_connection("wss://api2.poloniex.com:443") 
ws.send('{"command" : "subscribe", "channel" : 1001}') 

while True: 
    result = ws.recv() 
    json_result = json.loads(result) 
    if len(json_result) >= 3: 
     print(json_result) 

ws.close() 
+0

あなたはウェブサイトのソース[here](https://poloniex.com/js/plx_exchage.js?v=060617)を見て、2294行を見て、trollboxサブスクリプションがコメントされていることを確認することができます。 –

0

Hereを。それは美しいスープとdryscapeを使用します。 PoloniexのWebサイトにアクセスしてしばらく待ってから、Webサイト(Trollboxの場合)からデータを収集します。私もautobahnで試してみましたが、これは私が得たものですが、あなたのコードとまったく同じように見えるので、おそらく改善はありません。ここで

from twisted.internet.defer import inlineCallbacks 
from autobahn.twisted.wamp import ApplicationSession,ApplicationRunner 

#prints recieved message 
def tamperMessage(message): 
     print message 



class MyComponent(ApplicationSession): 

@inlineCallbacks 
def onJoin(self, details): 
    print("session joined") 
    #gets message and calls tamperMessage function 
    def gotMessage(type, messageNumber, username, message, reputation): 
     tamperMessage(message) 

    # 1. subscribe to a topic so we receive events 
    try: 
     yield self.subscribe(gotMessage,u'trollbox') 
    except Exception as e: 
     print("could not subscribe to topic:") 

runner = ApplicationRunner(url=u"wss://api.poloniex.com", realm=u"realm1") 
+0

ありがとうございます!残念ながら私はドライス​​クレーパーを働かせることはできませんが、私は新しい、より良い解決策を見つけました。下の私の答えを見てください。 – saitam

0

のでtrollboxはWAMPのWebソケットで今機能していない、あなたは切断を得ている理由は、非アクティブが原因であります。

ウェブサイトのソースhereを見て、2440行目を見て、trollboxサブスクリプションがコメントされていることを確認してください。

0

Poloniex trollboxが終了しました。 履歴にアクセスできますhere

関連する問題