You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中建立与Binance的WebSocket连接?

我之前也碰到过这个棘手的问题——不少R语言的WebSocket库确实都停止维护了,找能用的方案确实费了点功夫。不过亲测有几个可行的路子,能顺利和Binance的WebSocket端点对接,给你详细说说:

方案1:使用websocket包(CRAN活跃维护)

这个包是目前CRAN上状态良好的WebSocket客户端工具,完全可以对接Binance的WebSocket数据流,而且文档也比较清晰。

首先安装依赖包:

install.packages(c("websocket", "jsonlite"))

然后是连接Binance K线WebSocket的示例代码(以BTCUSDT 1分钟K线为例):

library(websocket)
library(jsonlite)

# 构造Binance的K线WebSocket端点
ws_url <- "wss://stream.binance.com:9443/ws/btcusdt@kline_1m"

# 创建WebSocket连接实例
ws_connection <- WebSocket$new(ws_url)

# 定义消息接收回调:收到数据后解析并打印K线信息
ws_connection$onMessage(function(event) {
  parsed_data <- fromJSON(event$data)
  cat("当前K线收盘价:", parsed_data$k$c, "\n")
  # 如果你需要保存数据,可以在这里写入文件或数据库
})

# 连接成功提示
ws_connection$onOpen(function(event) {
  cat("✅ 成功连接到Binance WebSocket!\n")
})

# 连接关闭提示
ws_connection$onClose(function(event) {
  cat("❌ 连接已关闭,状态码:", event$code, ",原因:", event$reason, "\n")
})

# 保持R会话运行以持续接收数据
# 若要主动断开连接,执行:ws_connection$close()

方案2:曲线救国——用reticulate调用Python的WebSocket库

如果R原生包遇到兼容性问题,还可以借助reticulate调用Python生态中成熟的WebSocket工具(比如websocket-client),这也是一个非常稳定的备选方案。

步骤如下:

  1. 先在Python环境安装依赖:
pip install websocket-client
  1. 在R中调用并连接:
library(reticulate)
library(jsonlite)

# 导入Python的WebSocket客户端
ws_client <- import("websocket")

# 定义消息处理函数
handle_message <- function(ws, message) {
  parsed_data <- fromJSON(message)
  cat("最新K线开盘价:", parsed_data$k$o, "\n")
}

# 创建WebSocket应用并启动
ws_app <- ws_client$WebSocketApp(
  url = "wss://stream.binance.com:9443/ws/btcusdt@kline_1m",
  on_message = handle_message,
  on_open = function(ws) cat("✅ 连接成功!\n"),
  on_close = function(ws, code, msg) cat("❌ 连接关闭\n")
)

# 启动连接(会阻塞当前会话,直到手动停止)
ws_app$run_forever()

一些注意事项

  • Binance的WebSocket端点必须使用wss协议,端口为9443,不要误用HTTP协议的端口
  • 如果你的网络环境无法直接访问Binance,需要配置代理后再尝试连接
  • 若出现频繁断开的情况,可以在回调函数中加入重连逻辑,保证数据流的稳定性

内容的提问来源于stack exchange,提问作者Federico Marchese

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:42:25