【问题标题】:Websockets in RR中的Websockets
【发布时间】:2013-05-24 18:15:10
【问题描述】:

我设法在 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 似乎没有触发“receive”方法并且没有显示任何内容。代码以无限循环结束,没有输出。

我知道 websocket 正在工作,所以代码中一定有错误。我是否必须以某种方式“ping”套接字才能开始广播?任何人都知道如何让它工作? 谢谢!

【问题讨论】:

    标签: r websocket algorithmic-trading


    【解决方案1】:

    首先,你有一个无限循环,因为你已经定义了一个无限循环:

    While(TRUE)
    

    值得注意的是,许多 R websocket 实现都利用了这个循环,因此可能不是错误,而是导致您所看到的内容的实现细节。

    看来您需要订阅 'message' 事件而不是 'receive' ( 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>
    }
    

    如果数据遵循规范中定义的这种格式,您可以检查该数据的解析方式以及返回的“操作”。

    【讨论】:

      猜你喜欢
      • 2012-06-13
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 2014-11-05
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多