message-pusher:打造专属消息推送服务的全攻略

message-pusher:打造专属消息推送服务的全攻略

【免费下载链接】message-pusher 搭建专属于你的消息推送服务,支持多种消息推送方式,支持 Markdown,基于 Golang 仅单可执行文件,开箱即用 【免费下载链接】message-pusher 项目地址: https://gitcode.com/GitHub_Trending/me/message-pusher

你是否还在为多平台消息推送繁琐配置而烦恼?是否需要一个统一的消息推送入口来管理所有通知?message-pusher 让你一站式解决这些问题。本文将带你从零开始,搭建专属于你的消息推送服务,支持多种推送方式,基于 Golang 开发,单可执行文件,开箱即用。

为什么选择 message-pusher?

message-pusher 是一款功能强大的消息推送服务,具有以下核心优势:

  • 多平台支持:覆盖邮件、微信、QQ、企业微信、飞书、钉钉、Bark、其他机器人工具等多种推送渠道
  • 简单易用:单可执行文件,无需复杂配置,开箱即用
  • 灵活扩展:支持自定义 Webhook 和消息格式,轻松对接第三方服务
  • 高效可靠:支持异步消息发送和消息队列,确保消息可靠送达

项目logo

核心功能解析

丰富的消息推送渠道

message-pusher 支持多达 16 种消息推送方式,满足你在不同场景下的需求:

  • 基础通讯:邮件、企业微信应用号/群机器人、钉钉群机器人
  • 移动推送:Bark App、微信测试号
  • 社交平台:其他机器人工具、Discord 群机器人
  • 办公协作:飞书自建应用/群机器人
  • 开发工具:WebSocket 客户端、腾讯云自定义告警

详细的通道类型实现可查看 channel/ 目录下的源代码文件,如 企业微信实现钉钉实现飞书实现

通道功能对比

不同的推送通道支持的功能有所差异,以下是主要通道的能力对比:

通道类型titledescriptioncontenturltoMarkdown 支持
email✅️✅️
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 数据库文件,方便备份和迁移。

手动部署步骤

如果你需要手动部署,可以按照以下步骤操作:

  1. 克隆仓库:
git clone https://link.gitcode.com/i/a5852d47e2df95caf38bf0d64d614455
cd message-pusher
  1. 编译前端:
cd web
npm install
npm run build
cd ..
  1. 编译后端:
go mod download
go build -ldflags "-s -w" -o message-pusher
  1. 运行服务:
chmod u+x message-pusher
./message-pusher --port 3000 --log-dir ./logs
  1. 访问 http://localhost:3000/ 并登录,初始账号用户名为 root,密码为 123456

系统配置详解

基础配置选项

message-pusher 提供了灵活的配置方式,可以通过环境变量或命令行参数进行配置:

  • 环境变量

    • REDIS_CONN_STRING:Redis 连接字符串,用于请求频率限制
    • SESSION_SECRET:会话密钥,确保重启后已登录用户的 cookie 有效
    • SQL_DSN:数据库连接字符串,支持多种数据库
  • 命令行参数

    • --port:指定服务器监听端口,默认 3000
    • --log-dir:指定日志文件夹
    • --version:打印系统版本号

Web 界面配置

登录系统后,你可以通过 Web 界面进行更详细的配置:

  1. 系统设置:配置服务器地址、登录注册选项、SMTP 服务等
  2. 个人设置:更新用户信息、绑定邮箱地址
  3. 推送设置:配置默认推送方式、设置推送 token、添加推送通道

Web 界面的前端代码位于 web/src/ 目录,主要页面实现包括 首页通道管理消息管理

实用 API 指南

消息推送 API

message-pusher 提供了简单易用的 API 接口,支持 GET 和 POST 两种请求方式:

API URLhttps://<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 "模型训练完成"

进阶技巧与最佳实践

消息群组管理

创建消息群组可以将消息同时推送到多个渠道,提高消息送达率:

  1. 在 Web 界面中创建群组
  2. 添加多个推送通道到群组
  3. 推送消息时指定群组作为推送通道

自定义消息模板

对于复杂的消息格式,可以使用自定义消息模板功能,实现与第三方服务的无缝对接。自定义消息的实现代码可参考 channel/custom.go

性能优化建议

  • 使用 Redis 存储请求频率限制数据,提高系统性能
  • 对于频繁发送的消息,考虑使用异步推送方式
  • 合理设置 Nginx 代理超时时间,确保连接稳定

总结与展望

message-pusher 作为一款功能全面的消息推送服务,凭借其丰富的推送渠道、简单的部署方式和灵活的 API 接口,为个人和企业用户提供了高效的消息推送解决方案。

未来,message-pusher 将继续优化现有功能,增加更多实用的推送渠道,并提升系统的稳定性和性能。我们欢迎社区贡献代码和提出建议,共同完善这个项目。

如果你觉得 message-pusher 对你有帮助,请点赞、收藏并关注项目更新,以便获取最新功能和使用技巧。

项目完整代码托管在 https://link.gitcode.com/i/a5852d47e2df95caf38bf0d64d614455,欢迎 Fork 和 PR。

【免费下载链接】message-pusher 搭建专属于你的消息推送服务,支持多种消息推送方式,支持 Markdown,基于 Golang 仅单可执行文件,开箱即用 【免费下载链接】message-pusher 项目地址: https://gitcode.com/GitHub_Trending/me/message-pusher

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值