message-pusher:打造专属消息推送服务的全攻略
你是否还在为多平台消息推送繁琐配置而烦恼?是否需要一个统一的消息推送入口来管理所有通知?message-pusher 让你一站式解决这些问题。本文将带你从零开始,搭建专属于你的消息推送服务,支持多种推送方式,基于 Golang 开发,单可执行文件,开箱即用。
为什么选择 message-pusher?
message-pusher 是一款功能强大的消息推送服务,具有以下核心优势:
- 多平台支持:覆盖邮件、微信、QQ、企业微信、飞书、钉钉、Bark、其他机器人工具等多种推送渠道
- 简单易用:单可执行文件,无需复杂配置,开箱即用
- 灵活扩展:支持自定义 Webhook 和消息格式,轻松对接第三方服务
- 高效可靠:支持异步消息发送和消息队列,确保消息可靠送达
核心功能解析
丰富的消息推送渠道
message-pusher 支持多达 16 种消息推送方式,满足你在不同场景下的需求:
- 基础通讯:邮件、企业微信应用号/群机器人、钉钉群机器人
- 移动推送:Bark App、微信测试号
- 社交平台:其他机器人工具、Discord 群机器人
- 办公协作:飞书自建应用/群机器人
- 开发工具:WebSocket 客户端、腾讯云自定义告警
详细的通道类型实现可查看 channel/ 目录下的源代码文件,如 企业微信实现、钉钉实现 和 飞书实现。
通道功能对比
不同的推送通道支持的功能有所差异,以下是主要通道的能力对比:
| 通道类型 | title | description | content | url | to | Markdown 支持 |
|---|---|---|---|---|---|---|
| ✅ | ✅ | ✅ | ❌ | ✅️ | ✅️ | |
| test | ✅ | ✅ | ✅ | ✅️ | ✅️ | ✅ |
| corp_app | ✅ | ✅ | ✅ | ✅️ | ✅ | ✅ |
| corp | ❌ | ✅ | ✅ | ✅️ | ✅️ | ✅ |
| lark | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ |
| ding | ✅ | ✅ | ✅ | ✅️ | ✅ | ✅ |
完整的通道支持情况请参考项目 README.md
独特功能:消息群组
message-pusher 提供了群组消息功能,可以将多个推送通道组合成一个群组,实现一次性推送到多个渠道的功能。这一功能特别适合重要通知需要多渠道保障的场景。
群组功能的实现代码可查看 channel/group.go 文件。
快速部署指南
Docker 一键部署
最简单的部署方式是使用 Docker:
docker run -d --restart always --name message-pusher -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/message-pusher:/data justsong/message-pusher
数据将保存在宿主机的 /home/ubuntu/data/message-pusher 目录,仅包含一个 SQLite 数据库文件,方便备份和迁移。
手动部署步骤
如果你需要手动部署,可以按照以下步骤操作:
- 克隆仓库:
git clone https://link.gitcode.com/i/a5852d47e2df95caf38bf0d64d614455
cd message-pusher
- 编译前端:
cd web
npm install
npm run build
cd ..
- 编译后端:
go mod download
go build -ldflags "-s -w" -o message-pusher
- 运行服务:
chmod u+x message-pusher
./message-pusher --port 3000 --log-dir ./logs
- 访问 http://localhost:3000/ 并登录,初始账号用户名为
root,密码为123456。
系统配置详解
基础配置选项
message-pusher 提供了灵活的配置方式,可以通过环境变量或命令行参数进行配置:
-
环境变量:
REDIS_CONN_STRING:Redis 连接字符串,用于请求频率限制SESSION_SECRET:会话密钥,确保重启后已登录用户的 cookie 有效SQL_DSN:数据库连接字符串,支持多种数据库
-
命令行参数:
--port:指定服务器监听端口,默认 3000--log-dir:指定日志文件夹--version:打印系统版本号
Web 界面配置
登录系统后,你可以通过 Web 界面进行更详细的配置:
- 系统设置:配置服务器地址、登录注册选项、SMTP 服务等
- 个人设置:更新用户信息、绑定邮箱地址
- 推送设置:配置默认推送方式、设置推送 token、添加推送通道
Web 界面的前端代码位于 web/src/ 目录,主要页面实现包括 首页、通道管理 和 消息管理。
实用 API 指南
消息推送 API
message-pusher 提供了简单易用的 API 接口,支持 GET 和 POST 两种请求方式:
API URL:https://<domain>/push/<username>
GET 请求示例:
https://<domain>/push/<username>?title=<标题>&description=<描述>&content=<Markdown文本>&channel=<推送方式>&token=<推送token>
POST 请求示例(JSON 格式):
{
"title": "标题",
"description": "描述",
"content": "**内容**",
"channel": "email",
"token": "your_token"
}
详细的 API 文档可参考 docs/API.md。
多语言调用示例
message-pusher 提供了多种编程语言的调用示例,方便你在不同项目中集成:
Python 示例:
import requests
SERVER = "https://msgpusher.com"
USERNAME = "test"
TOKEN = "666"
def send_message(title, description, content):
res = requests.post(f"{SERVER}/push/{USERNAME}", json={
"title": title,
"description": description,
"content": content,
"token": TOKEN
})
return res.json()
Bash 示例:
MESSAGE_PUSHER_SERVER="https://msgpusher.com"
MESSAGE_PUSHER_USERNAME="test"
MESSAGE_PUSHER_TOKEN="666"
sendmsg() {
local param=$(</dev/stdin)
curl -s -o /dev/null --get --data-urlencode "content=${param}" "$MESSAGE_PUSHER_SERVER/push/$MESSAGE_PUSHER_USERNAME?token=$MESSAGE_PUSHER_TOKEN"
}
# 使用方式:uname -ra | sendmsg
更多语言示例(Go、C#、Node.js)可参考项目 README.md 中的用法部分。
典型应用场景
服务器监控告警
将 message-pusher 集成到你的服务器监控脚本中,当服务器出现异常时及时推送告警信息:
# 伪代码示例
if 服务器负载 > 90%:
send_message(
title="服务器负载过高",
description=f"当前负载: {load}",
content=f"**服务器状态报告**\n- 负载: {load}\n- 内存使用率: {mem_usage}\n- 磁盘空间: {disk_usage}"
)
博客评论通知
为你的博客系统添加新评论通知功能,及时了解读者反馈:
// 伪代码示例
blog.on('new_comment', (comment) => {
send_message(
title="新评论通知",
description=`${comment.author} 评论了你的文章`,
content=comment.content
);
});
自动化脚本通知
在长时间运行的脚本完成后发送通知,无需一直等待:
# 训练深度学习模型完成后通知
python train_model.py && sendmsg "模型训练完成"
进阶技巧与最佳实践
消息群组管理
创建消息群组可以将消息同时推送到多个渠道,提高消息送达率:
- 在 Web 界面中创建群组
- 添加多个推送通道到群组
- 推送消息时指定群组作为推送通道
自定义消息模板
对于复杂的消息格式,可以使用自定义消息模板功能,实现与第三方服务的无缝对接。自定义消息的实现代码可参考 channel/custom.go。
性能优化建议
- 使用 Redis 存储请求频率限制数据,提高系统性能
- 对于频繁发送的消息,考虑使用异步推送方式
- 合理设置 Nginx 代理超时时间,确保连接稳定
总结与展望
message-pusher 作为一款功能全面的消息推送服务,凭借其丰富的推送渠道、简单的部署方式和灵活的 API 接口,为个人和企业用户提供了高效的消息推送解决方案。
未来,message-pusher 将继续优化现有功能,增加更多实用的推送渠道,并提升系统的稳定性和性能。我们欢迎社区贡献代码和提出建议,共同完善这个项目。
如果你觉得 message-pusher 对你有帮助,请点赞、收藏并关注项目更新,以便获取最新功能和使用技巧。
项目完整代码托管在 https://link.gitcode.com/i/a5852d47e2df95caf38bf0d64d614455,欢迎 Fork 和 PR。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




