🌋 JMA火山情报 WebSocket 数据

日本气象厅火山喷发观测报 · 长周期 / 高频率 双通道

🌊 长周期 (long-period) wss://sismotide.top/jma-long
⚡ 高频率 (high-frequency) wss://sismotide.top/jma-high

📡 概述

通过 WebSocket 接收日本气象厅 (JMA) 发布的火山喷发观测报实时数据。

📋 Initial 数据

连接后首次推送或实时更新的地震/火山信息,包含详细描述、ID、类型等。

💓 Heartbeat 心跳

每30秒由服务端发送,包含唯一ID和时间戳,保持连接活跃。

⌨️ 命令 jma_atom_list

客户端可发送的命令(如获取Atom列表),触发对应响应。

⏱️ 时间戳说明

所有时间字段的格式、时区 (JST/UTC) 详解。

🔍 详细字段说明

Initial 消息
Heartbeat 消息
客户端命令
时间戳说明

📦 Initial 数据推送

触发时机:新客户端连接后立即发送当前最新数据;当有新的地震/火山报告时实时推送。

消息示例 (长周期/高频率 结构相同)

{
  "type": "initial",
  "data": {
    "Data": {
      "id": "20260308083837_0_VFVO52_016000",
      "title": "噴火に関する火山観測報",
      "time": "2026-03-08T08:38:37Z",
      "name": "札幌管区気象台",
      "volcano": "雌阿寒岳",
      "description": "連続噴火停止"
    },
    "md5": "e263d5716090e788bcbee6989ff4697e"
  }
}

外层字段

字段类型必填说明
typestring固定值 "initial"
dataobject包含数据主体和校验值

data 对象字段

字段类型必填说明
DataobjectJMA 核心数据,包含地震/火山详情
md5stringData 字段的 MD5 哈希,用于完整性校验

Data 对象字段

字段类型说明
idstring唯一标识符,由报告 link URL 提取(如 20260308083837_0_VFVO52_016000),无则用 entry 的 id
titlestring标题(如「噴火に関する火山観測報」)
timestring发布时间,ISO8601 格式(如 2026-03-08T08:38:37Z,UTC)
namestring地区/发布机构(如「札幌管区気象台」)
volcanostring火山名称,从 content 中解析
descriptionstring详细描述,从 content 中剥离表头后的纯正文(可含换行符)

⚠️ 实际推送中可能包含更多字段,以上为基础核心字段。

💓 Heartbeat 心跳包

发送间隔:服务端每30秒向所有已连接客户端推送一次。

{
  "type": "heartbeat",
  "id": "3a949179725f43a4850f52f601853b20",
  "timestamp": 1772959653612
}
字段类型说明
typestring固定值 "heartbeat"
idstring本次心跳的唯一标识(32位十六进制字符,类似UUID无连字符)
timestampnumber服务端发送时间 (Unix 毫秒时间戳)

客户端可据此判断连接健康度,若超过45秒未收到心跳,建议主动重连。

📟 客户端命令 (Client Commands)

客户端可以通过 WebSocket 发送特定格式的JSON命令,服务端会返回相应数据。目前已知支持的命令:

🔖 全部命令标识: jma_atom_list —— 获取可用的Atom订阅列表或元数据。

请求格式示例

{
  "type": "jma_atom_list"
}

命令说明

命令 type描述预期响应
jma_atom_list 请求当前可用的JMA Atom订阅列表(如地震、火山、海啸等分类) 服务器将返回一个包含列表的JSON(具体结构以实际响应为准)

💡 提示:其他命令可能后续增加,建议订阅后监听数据推送。

注意:命令发送后,服务器可能回复一条或多条数据,格式通常包含 typedata 字段。

⏳ 时间格式与时区

timestamp 字段 (通用):Unix 毫秒时间戳,自 1970-01-01 00:00:00 UTC 起毫秒数。示例 1772959653612

data.Data.time:发布时间,ISO8601 格式 (UTC),如 2026-03-08T08:38:37Z

description 内嵌时间:例如 2026年03月08日16時00分(080700UTC),同时标注了JST和UTC,解析时请注意。

字段/位置类型时区示例
顶层 timestampnumber (ms)UTC1772959653612
data.Data.timestring (ISO8601)UTC"2026-03-08T08:38:37Z"
data.Data.description中的时刻stringJST 和 UTC 混合"16時00分(080700UTC)" → 16:00 JST / 07:00 UTC

📌 注意事项

  • 长周期 vs 高频率:两个 WebSocket 端点数据格式完全一致,但推送密度不同。高频通道适用于实时预警,长周期适合一般展示。
  • 心跳维持:服务端每30秒发送一次 heartbeat;若连续2次未收到(即超过60秒无消息),建议客户端主动断开并重连。
  • 数据校验:每个 initial 消息都包含 md5 字段,可对 Data 部分进行哈希比对,防止传输损坏。
  • 命令使用:发送 {"type":"jma_atom_list"} 可获取元数据列表,具体响应格式可能变化,请以实际数据为准。
  • 连接安全性:使用 wss:// 加密连接,确保数据私密性。
  • 断线重连:推荐指数退避重连策略,避免频繁请求。