PushMe 消息通知平台技术分析

项目概述

PushMe 是一个开源的轻量级消息通知解决方案,由 Android 客户端、自建服务器端和多种接收端组成。该项目旨在为个人开发者和小型团队提供简单、可靠的消息推送能力,无需复杂的注册登录流程,通过 push_key 即可实现消息推送。

核心特点

  • 简单:无需登录注册,安装后获取 push_key 即可使用
  • 轻量:Android 原生开发,安装包不到 3M
  • 可靠:支持离线消息存储与转发
  • 兼容:接口兼容企业微信/钉钉/飞书群机器人
  • 可扩展:支持插件开发和消息转发

系统架构

graph TD
    subgraph "发送端"
        A1[API调用]
        A2[curl命令]
        A3[第三方服务]
        A4[群机器人兼容]
    end

    subgraph "PushMe服务器"
        B1[HTTP API 端口3010]
        B2[WebSocket服务]
        B3[消息队列]
        B4[push_key管理]
    end

    subgraph "接收端"
        C1[Android客户端]
        C2[Windows客户端]
        C3[Telegram机器人]
    end

    A1 -->|HTTP POST| B1
    A2 -->|HTTP POST| B1
    A3 -->|HTTP POST| B1
    A4 -->|HTTP POST| B1

    B1 --> B3
    B3 --> B2

    B2 -->|WebSocket| C2
    B2 -->|原生推送| C1
    B2 -->|Bot API| C3

    C1 -->|确认回执| B4
    C2 -->|确认回执| B4

架构说明

  1. 发送端:支持多种消息来源

    • API 调用:任何支持 HTTP 的编程语言
    • curl 命令:命令行直接发送
    • 第三方服务: webhook 集成
    • 群机器人兼容:可直接替换企业微信/钉钉/飞书群机器人地址
  2. PushMe服务器:核心消息中继

    • HTTP API(端口3010):接收消息推送请求
    • WebSocket服务:实时推送给桌面客户端
    • 消息队列:处理离线消息
    • push_key管理:用户身份验证
  3. 接收端:多终端消息同步

    • Android客户端:原生推送接收
    • Windows客户端:WebSocket 实时接收
    • Telegram机器人:跨平台消息转发

技术栈分析

服务器端(PushMeServer)

组件技术选型
运行时Node.js >= 16
进程管理PM2
部署方式Docker / 源码安装
通信协议HTTP + WebSocket
消息格式JSON

端口分配

  • 3010:Web管理界面、消息发送 API、WebSocket 服务(管理员和 Windows 客户端)
  • 3100:消息服务端口(Android 客户端连接)

Android 客户端

特性说明
系统要求Android 7+
开发方式原生 Android 开发
安装包大小< 3M
后台保活支持多种 ROM 的后台保活设置

后台保活策略

  • 权限管理:允许自启动、后台运行
  • 电池管理:允许后台高耗电(实测耗电低)
  • 通知管理:允许消息通知
  • Android 12+:需开启 alarm 闹钟权限
  • 部分手机:关闭后台网络优化

消息类型支持

type 参数类型说明
text通知消息普通文本消息
markdown通知消息Markdown 格式文本消息
html通知消息HTML 格式消息
data数据消息数据可视化(支持 data/markdata/chart/echarts 格式)

核心功能分析

1. push_key 认证机制

push_key 是 PushMe 的核心认证机制,用户在 Android 客户端生成后,即可用于 API 调用。这种设计避免了传统账号体系的复杂性:

获取流程:安装APP → 生成push_key → 复制使用 → 发送消息

优势

  • 无需注册登录
  • 密钥即身份
  • 支持多设备独立密钥

2. 消息通道机制

PushMe 支持自定义消息通道,用户可以为不同来源的消息设置:

  • 不同的通知声音
  • 不同的震动模式
  • 不同的通知样式

应用场景

  • 监控告警:使用紧急提醒
  • 消息通知:使用普通提示
  • 定时任务:使用静默通知

3. 插件系统

PushMe 支持插件开发,允许用户对收到的消息进行加工处理:

// 插件开发示例(概念)
function processMessage(message) {
    // 自定义处理逻辑
    return modifiedMessage;
}

4. 消息转发

支持将手机端收到的消息转发到电脑端:

  • Android 客户端接收消息
  • 通过 WebSocket 转发到 Windows 客户端
  • 实现跨设备消息同步

API 接口

发送消息接口

请求地址POST https://push.i-i.me/

请求参数

参数描述必填
push_key接口密钥
title消息标题与 content 至少填一项
content消息内容与 title 至少填一项
type消息类型(text/markdown/html/data)
topic消息主题(info/success/warning/error)

示例请求

# 发送文本消息
curl -X POST "https://push.i-i.me/" \
  -d "push_key=YOUR_PUSH_KEY" \
  -d "title=测试标题" \
  -d "content=测试内容"

# 发送 Markdown 消息
curl -X POST "https://push.i-i.me/" \
  -d "push_key=YOUR_PUSH_KEY" \
  -d "title=Markdown测试" \
  -d "content=# 标题\n**加粗**内容" \
  -d "type=markdown"

兼容性接口

PushMe 接口兼容企业微信/钉钉/飞书群机器人,可直接替换 webhook 地址:

# 原企业微信机器人
webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=XXX"

# 替换为 PushMe
webhook = "https://push.i-i.me/?push_key=YOUR_PUSH_KEY"

部署方案

Docker 部署

docker run -dit \
  -p 3010:3010 \
  -p 3100:3100 \
  -v $PWD/pushme-server/config:/pushme-server/config \
  --name pushme-server \
  --restart unless-stopped \
  node:16.20.2-alpine3.17

源码部署

# 环境要求:nodejs >= 16
npm i --registry=https://registry.npmmirror.com
npm i pm2 -g --registry=https://registry.npmmirror.com
pm2 start server.js --name pushme-server
pm2 save
pm2 startup

应用场景

1. 服务监控告警

# 服务器监控脚本
curl -X POST "https://push.i-i.me/" \
  -d "push_key=YOUR_KEY" \
  -d "title=服务器告警" \
  -d "content=CPU使用率超过90%" \
  -d "topic=error"

2. 自动化脚本通知

# Python 脚本集成
import requests

def send_notification(title, content):
    requests.post("https://push.i-i.me/", data={
        "push_key": "YOUR_KEY",
        "title": title,
        "content": content
    })

3. CI/CD 流程通知

# Jenkins Pipeline
stage('Notification') {
    steps {
        sh """
        curl -X POST "https://push.i-i.me/" \
          -d "push_key=\${PUSH_KEY}" \
          -d "title=构建通知" \
          -d "content=项目 \${JOB_NAME} 构建完成"
        """
    }
}

技术优势与局限

优势

  1. 零门槛使用:无需注册登录,获取 push_key 即可
  2. 轻量高效:安装包小,资源占用低
  3. 自建可控:支持私有部署,数据安全可控
  4. 多端同步:Android + Windows + Telegram 全覆盖
  5. 扩展性强:支持插件和自定义通道

局限

  1. 后台保活依赖 ROM:部分国产 ROM 后台管理严格
  2. 无官方 iOS 客户端:仅支持 Android
  3. 消息历史有限:离线消息存储容量有限
  4. 自建需技术能力:私有部署需要 Node.js 环境

与同类方案对比

方案部署复杂度终端支持消息可靠性自定义能力
PushMeAndroid/Windows
Server酱微信
BarkiOS
Gotify全平台
企业微信机器人全平台

总结

PushMe 是一个设计精良的个人消息推送解决方案,通过简单的 push_key 机制实现了零门槛的消息推送能力。其模块化的架构设计(Android 客户端 + Node.js 服务器 + Windows 客户端)使得用户可以根据需求灵活选择部署方式。

对于个人开发者和小型团队而言,PushMe 提供了一个开箱即用的消息通知平台,特别适合:

  • 服务器监控告警
  • 自动化脚本通知
  • CI/CD 流程集成
  • 个人消息聚合

项目的开源特性(MIT 许可)和完善的文档支持使其成为一个值得推荐的技术选择。

参考资源

最后修改:2026 年 01 月 15 日
如果觉得我的文章对你有用,请随意赞赏