跳转到内容
容器显示器通知
WebSocket 流式传输
通知历史记录
紧急程度级别
自定义图标
自动过期
分类
POST /notify
容器显示器通知
WebSocket 流式传输
通知历史记录
紧急程度级别
自定义图标
自动过期
分类
POST /notify
容器显示器通知
WebSocket 流式传输
通知历史记录
紧急程度级别
自定义图标
自动过期
分类
POST /notify
容器显示器通知
WebSocket 流式传输
通知历史记录
紧急程度级别
自定义图标
自动过期
分类
POST /notify
NotificationsHoody 通知

通过 HTTP 发送桌面通知。

通过单次 HTTP POST 向任意容器显示器发送 Linux 桌面通知。通知服务器在容器的 X11 显示器上调用 notify-send——触发、获取历史记录或实时流式传输。

notify · hoody-n

# 向显示器 0 发送通知

curl -X POST "https://abc123-def456-n-1.node-us-1.containers.hoody.com/api/v1/notifications/notify"

-d '{"display":"0","summary":"Build Complete","urgency":"normal"}'

# 响应

{"success":true}

工作原理

三个步骤,每步一次 HTTP 调用。

每条通知遵循相同的生命周期:触发、获取历史或实时流式传输、完成后关闭。

01

触发

POST /notify 向目标 X11 显示器发送 notify-send 调用。提供 display、summary,以及可选的 urgency、body、expire_time 或 icon。

通知 — 触发

# Fire a notification

curl -X POST .../notify

{"display":"0",

"summary":"Build Complete",

"urgency":"normal"}

 

{"success":true}

02

投递

notify-send 把通知交给目标 X11 显示上的系统通知守护进程。它会出现在任何已连接的 display 会话里,并按 urgency 和 expire_time 自动过期。

notifications — deliver

# notify-send on display :0

notify-send → X11 :0

 

▸ Build Complete

normal · auto-expires

02

获取或流式传输

GET /[display] 获取通知历史,支持可选的 limit、since、username 和 session 筛选。通过 WebSocket 连接 /stream?displays=0 可获取实时推送更新。

通知 — 获取

# Poll history

curl .../0?limit=50

 

# Or stream live

new WebSocket(

"wss://.../stream?displays=0"

)

紧急程度级别

low、normal、critical。

三个紧急程度级别直接映射到 notify-send 行为。选择合适的级别,通知守护进程负责其余处理。

快速消失。将 expire_time 设为 3000,适用于后台任务、遥测或不应打断专注的信息性提示。

"urgency": "low",

"expire_time": 3000

普通

标准级别。省略 urgency 时的默认值。通知守护进程在配置的超时后显示并自动关闭。

"urgency": "normal"

// 默认值 —— 省略即使用此项

紧急

持久显示——需要手动关闭。将 expire_time 设为 0,适用于系统故障、构建错误或任何需要立即处理的情况。

"urgency": "critical",

"expire_time": 0

频道

获取历史或实时流式传输。

两个读取频道满足不同需求:REST 用于审计日志和一次性查询,WebSocket 用于仪表盘和实时监控。

GETGET /[display]拉取
WSWS /stream流式

获取某个显示器的通知历史,支持按 limit、since 时间戳、username 或 session ID 筛选。适用于审计日志、一次性查询和批量处理。

获取历史记录

# 获取 display 0 的最近 50 条

curl ".../0?limit=50"

# 按时间过滤

curl ".../0?since=1749025000000"

包含 id、summary、urgency、timestamp 和 icon_url 的通知对象 JSON 数组。

使用 displays=0,:1,2 或 displays=all 订阅一个或多个显示器。消息到达时实时推送。适用于仪表盘和实时监控。

实时流

# 打开一个 WebSocket

const ws = new WebSocket(

"wss://.../stream?displays=0"

)

# 收到消息时

ws.onmessage = (e) => {

const msg = JSON.parse(e.data)

// msg.summary, msg.body, msg.urgency

}

每条新通知到达时推送 [ type: "notification", data: [ id, summary, urgency, timestamp ] ]。

使用场景

从构建流水线到 ML 任务。

任何长时间运行的进程需要发出完成或失败信号时,一次 HTTP POST 即可搞定。

CI/CD 告警

长时间构建完成后,HTTP POST 在容器显示器上触发通知——在任意活跃的显示器会话中可见。

系统监控

服务器告警路由到容器 X11 显示器上的桌面通知,在任意活跃的显示器会话中可见。

长时间运行的任务

数据导出、视频渲染、ML 模型训练、备份完成——完成时通知,无需轮询。

自动化工作流

Cron 作业、定时任务和自动化脚本在完成或失败时通知容器显示器。

API 参考

8 个端点。一个通知服务器。

创建主题和订阅者、触发推送通知、流式传输事件并检索交付历史——全部通过简单 HTTP。

Base URL https://abc123-def456-n-1.node-us-1.containers.hoody.com

触发

1 个端点

POST .../api/v1/notifications/notify

POST
/api/v1/notifications/notify通过 notify-send 在目标 display 上触发一条新的桌面通知

拉取与流式

2 个端点

GET .../api/v1/notifications/{display}?limit=50

GET
/api/v1/notifications/{display}获取一个或多个指定 display 的通知
WS
/api/v1/notifications/stream?displays=0,1通过 WebSocket 连接的实时通知流

图标

1 个端点

GET .../api/v1/notifications/icons/{iconId}

GET
/api/v1/notifications/icons/{iconId}按 icon ID 获取通知图标

Health & Metrics

1 个端点

GET .../api/v1/notifications/health

GET
/api/v1/notifications/health通知服务器的服务健康检查

通知只需一次 HTTP POST。

任何能发出 HTTP 请求的脚本、服务或自动化程序都可以向你的容器显示器发送桌面通知。

阅读文档