r - R 中的 Websocket

标签 r websocket algorithmic-trading

我设法使用以下规范在 R 中建立到 Mtgox websocket 的连接:

  • 网址:https://socketio.mtgox.com/mtgox?Currency=USD
  • 端口:80
  • 规范:https://en.bitcoin.it/wiki/MtGox/API/Streaming

  • 我使用了从 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”套接字才能开始广播?任何人都知道如何让它工作?
    谢谢!

    最佳答案

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

    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 中隐式打印的数据。打印 功能。

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

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

    关于r - R 中的 Websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16741217/

    相关文章:

    R:按最新日期划分

    browser - 我可以在我的 websockets 上进行流量控制吗?

    algorithmic-trading - 算法交易API

    python - 如何导入外汇数据并使用 yfinance 和 pandas 数据阅读器读取它?

    websocket - ejabberd 与 webclient (websocket.js) 连接失败

    uml - 谁是自动化系统的主要参与者?

    r - 如何在R中为kmeans指定距离度量?

    r - 试图通过单索引模型进行预测时出现两个R错误消息

    r - 如何在R中总结得出一个小组的模式

    java - 使用 HTTPS (SSL) 保护 websocket