🌋 JMA火山情报 WebSocket 数据
日本气象厅火山喷发观测报 · 长周期 / 高频率 双通道
🌊 长周期 (long-period)
wss://sismotide.top/jma-long
⚡ 高频率 (high-frequency)
wss://sismotide.top/jma-high
📡 概述
通过 WebSocket 接收日本气象厅 (JMA) 发布的火山喷发观测报实时数据。
🔍 详细字段说明
Initial 消息
Heartbeat 消息
客户端命令
时间戳说明
📦 Initial 数据推送
触发时机:新客户端连接后立即发送当前最新数据;当有新的地震/火山报告时实时推送。
消息示例 (长周期/高频率 结构相同)
{
"type": "initial",
"data": {
"Data": {
"id": "20260308083837_0_VFVO52_016000",
"title": "噴火に関する火山観測報",
"time": "2026-03-08T08:38:37Z",
"name": "札幌管区気象台",
"volcano": "雌阿寒岳",
"description": "連続噴火停止"
},
"md5": "e263d5716090e788bcbee6989ff4697e"
}
}
外层字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
type | string | 是 | 固定值 "initial" |
data | object | 是 | 包含数据主体和校验值 |
data 对象字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
Data | object | 是 | JMA 核心数据,包含地震/火山详情 |
md5 | string | 是 | Data 字段的 MD5 哈希,用于完整性校验 |
Data 对象字段
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 唯一标识符,由报告 link URL 提取(如 20260308083837_0_VFVO52_016000),无则用 entry 的 id |
title | string | 标题(如「噴火に関する火山観測報」) |
time | string | 发布时间,ISO8601 格式(如 2026-03-08T08:38:37Z,UTC) |
name | string | 地区/发布机构(如「札幌管区気象台」) |
volcano | string | 火山名称,从 content 中解析 |
description | string | 详细描述,从 content 中剥离表头后的纯正文(可含换行符) |
⚠️ 实际推送中可能包含更多字段,以上为基础核心字段。
💓 Heartbeat 心跳包
发送间隔:服务端每30秒向所有已连接客户端推送一次。
{
"type": "heartbeat",
"id": "3a949179725f43a4850f52f601853b20",
"timestamp": 1772959653612
}
| 字段 | 类型 | 说明 |
|---|---|---|
type | string | 固定值 "heartbeat" |
id | string | 本次心跳的唯一标识(32位十六进制字符,类似UUID无连字符) |
timestamp | number | 服务端发送时间 (Unix 毫秒时间戳) |
客户端可据此判断连接健康度,若超过45秒未收到心跳,建议主动重连。
📟 客户端命令 (Client Commands)
客户端可以通过 WebSocket 发送特定格式的JSON命令,服务端会返回相应数据。目前已知支持的命令:
🔖 全部命令标识:
jma_atom_list —— 获取可用的Atom订阅列表或元数据。
请求格式示例
{
"type": "jma_atom_list"
}
命令说明
| 命令 type | 描述 | 预期响应 |
|---|---|---|
jma_atom_list |
请求当前可用的JMA Atom订阅列表(如地震、火山、海啸等分类) | 服务器将返回一个包含列表的JSON(具体结构以实际响应为准) |
💡 提示:其他命令可能后续增加,建议订阅后监听数据推送。
注意:命令发送后,服务器可能回复一条或多条数据,格式通常包含 type 和 data 字段。
⏳ 时间格式与时区
| 字段/位置 | 类型 | 时区 | 示例 |
|---|---|---|---|
顶层 timestamp | number (ms) | UTC | 1772959653612 |
data.Data.time | string (ISO8601) | UTC | "2026-03-08T08:38:37Z" |
data.Data.description中的时刻 | string | JST 和 UTC 混合 | "16時00分(080700UTC)" → 16:00 JST / 07:00 UTC |
📌 注意事项
- 长周期 vs 高频率:两个 WebSocket 端点数据格式完全一致,但推送密度不同。高频通道适用于实时预警,长周期适合一般展示。
- 心跳维持:服务端每30秒发送一次 heartbeat;若连续2次未收到(即超过60秒无消息),建议客户端主动断开并重连。
- 数据校验:每个
initial消息都包含md5字段,可对Data部分进行哈希比对,防止传输损坏。 - 命令使用:发送
{"type":"jma_atom_list"}可获取元数据列表,具体响应格式可能变化,请以实际数据为准。 - 连接安全性:使用 wss:// 加密连接,确保数据私密性。
- 断线重连:推荐指数退避重连策略,避免频繁请求。