4

次の仕様で、R で Mtgox websocket への接続を確立することができました。

https://github.com/zeenogee/R-Websocketsからダウンロードした改良された R ライブラリ「websocket」を使用しました。

require("websockets")
con = websocket("https://socketio.mtgox.com/mtgox?Currency=USD")

接続が正常に確立されました。ただし、ソケットがブロードキャストしていないようです。簡単な関数fを作りました

  f = function(con) {
  Print("Test Test!", con)
}

set_callback("receive", f, con)

while(TRUE)
  {
  service(con)
  Sys.sleep(0.05)
  }

websocket からデータを受信するたびにテキストを出力する必要があります。しかし、websocket は「受信」メソッドをトリガーしていないようで、何も表示されません。コードは、出力のない無限ループで終了しました。

Websocket が機能していることはわかっているので、コードに誤りがあるはずです。ブロードキャストを開始するには、何らかの方法でソケットを「ping」する必要がありますか? 誰でもそれを機能させる方法を知っていますか? ありがとう!

4

1 に答える 1

5

まず、無限ループを定義したため、無限ループがあります。

While(TRUE)

注目に値するのは、多数の R websocket 実装がこのループを利用しているため、バグではなく、実装の詳細が原因である可能性があることです。

「受信」ではなく「メッセージ」イベントにサブスクライブする必要があるようです ( https://en.bitcoin.it/wiki/MtGox/API/Streaming )。

JavaScript の場合 (MtGox 仕様より):

conn.on('message', function(data) {
    // Handle incoming data object.
});

またはRで:

set_callback('message',f,con)

それに失敗して...

また、ストリームが R Print関数 で暗黙的に印刷できないデータを返している可能性があることもコメントします。

サンプル:

{
  "op":"remark",
  "message":<MESSAGE FROM THE SERVER>,
  "success":<boolean>
}

データが仕様で定義されているこの形式に従っている場合、そのデータがどのように解析されているか、および返されている「op」を調べることができます。

于 2013-06-24T12:49:07.553 に答える