使用R的websocket连接AISstream.io时遭遇handle_read_frame错误求助
解决R websocket连接AISstream.io的handle_read_frame错误及格式问题
问题根源分析
你收到的十六进制消息是ASCII编码的错误提示,解码后内容为:
{"error": "Subscription Object Is Malformed"}
结合报错和代码来看,问题出在两个核心点:
- WebSocket URL末尾的多余空格:代码里的URL是
"wss://stream.aisstream.io/v0/stream ",末尾空格会导致连接解析异常,触发End of File错误。 - 订阅参数格式错误:
BoundingBoxes字段被错误用引号包裹成字符串,AISstream要求该字段是JSON数组类型,而非字符串。
修正后的代码
library(websocket) { # 移除URL末尾的多余空格 ws <- WebSocket$new("wss://stream.aisstream.io/v0/stream") ws$onMessage(function(event) { d <- event$data cat("Message ", d, "\n") }) ws$onOpen(function(event) { # 修正BoundingBoxes格式,去掉外层引号直接传数组 ws$send('{"APIKey":"<你的API密钥>", "BoundingBoxes": [[[-90, -180], [90, 180]]]}') }) ws$onClose(function(event){ c <- event$code cat("Close ", c, "\n") }) }
额外注意事项
- 务必将
<你的API密钥>替换为AISstream.io提供的有效密钥。 - 建议更新
websocket包到最新版本,规避版本兼容问题:install.packages("websocket")
内容的提问来源于stack exchange,提问作者BLP92
相关产品推荐
相关产品推荐

