diff --git a/src/content/dev/theme.mdx b/src/content/dev/theme.mdx index 0bdbadc..49dc8b7 100644 --- a/src/content/dev/theme.mdx +++ b/src/content/dev/theme.mdx @@ -153,6 +153,16 @@ socket.onmessage = (event) => { 显示「N 天后到期」「已过期」用它,不要拿 `expires_at` 按浏览器的时钟自己算。hub 按自己所在时区的日期给 在线节点顺延到期日;访客在别的时区时,自己算会让在线节点在顺延之前显示几个小时的「已过期」。 +## 离线时长 + +每个节点还带一个 `last_seen_ago`:按 hub 的时钟算的、距最后一次上报的秒数,从未上报过为 `null`。 + +节点离线(`online` 为 `false`)时,显示「离线 N 分」用它,不要拿 `last_seen` 去减浏览器的时钟。访客的时钟 +不准时(双系统在东八区常见快或慢 8 小时),自己算会把刚离线的节点显示成离线 8 小时,或者算出负数。 + +在线节点也带这个值。刚重连、还没上报的节点 `online` 为 `true`,值是断开前那次上报至今的秒数,所以离线时长 +只在 `online` 为 `false` 时显示。 + ## 价格与付款周期 `currency` 是货币代码,交给 `Intl.NumberFormat` 显示。hub 只检查它是三个大写字母,不核对代码是否真的存在, @@ -481,6 +491,7 @@ iOS 会把透明的地方填成黑色,这张图要用不透明的底色。 | `currency` 的格式检查 | 1.3.1 及更早 | 存下的值可能不是三个字母,`Intl` 会抛错,要兜住 | | 站点图标 | 1.3.2 及更早 | `/favicon.svg`、`/apple-touch-icon.png` 总是主题自带的那个 | | `/api/ws?gzip` | 1.3.2 及更早 | 忽略参数,推文本帧 | +| `last_seen_ago` | 1.3.2 及更早 | 拿 `last_seen` 和浏览器时钟自己算,`last_seen` 为 0 是从未上报;`null` 同样是从未上报,和没有这个 key 分开判断 | `expires_in` 为 `null` 表示没有到期日,要和「没有这个 key」分开判断: