很小巧的消息推送 pushme

PushMeServer

PushMeServer是基于nodejs开发的消息服务器,支持安装、登录、管理push_key的功能,环境要求nodejs版本>=16。

仓库地址

Github:https://github.com/yafoo/pushme-server
Gitee:https://gitee.com/yafu/pushme-server
系统部署
请参考Git仓库README.md描述。

服务地址

程序运行,需要两个端口3100和3010,加入你的服务器公网IP为0.0.0.0,则:

  • 1、3100:为消息服务端口,需开放。在PushMe安卓客户端,设置自建服务,host填写0.0.0.0,端口填写3100,保存即可。
  • 2、3010:为Web管理、消息发送API及Websocket服务端口,给管理员使用和给PushMe Client电脑客户端使用,可以根据情况选择此端口是否开放。

接口地址

消息接口地址为:http://您服务器:3010
端口更改、域名绑定
如果您想使用其他端口,请在server.js文件内修改,同时您也可以通过nginx绑定自己的域名,通过域名访问。

docker搭建

version: '3.8'

services:
  pushme-server:
    image: yafoo/pushme-server:latest
    container_name: pushme-server
    ports:
      - "3010:3010"
      - "3100:3100"
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./config:/pushme-server/config
    restart: unless-stopped


二次开发

如果您需要二次开发,请参考jj.js开发框架,开发时注意打开调试模式,在config/app.js里设置app_debug为true,上线时记得关闭调试模式。

关于push_key

目前push_key和官网共用,只能通过app从官方获取。另外,自建服务暂不支持temp_key。

python推送脚本

# 如果是自己写的 Python 脚本,只需要在加入这样几行
import notify
title = 'xxxx'
notify.send(title, result)

手机端遇到的问题

不过我明明给这个 APP 自启动的权限,并且关闭了省电限制,也让它固定在后台,但是却发现依然不能收到通知,只能打开 APP 后刷新才能看到消息。

而且这 APP 一放到后台没多久,就会弹出一条通知**「通道状态:Disconnected」**

解决方案

我发现直接把 APP 从后台划掉,这样就可以直接收到通知了。到「通知管理」里面,将 StateChannel 关掉,就不会收到通道状态的消息了。

更新 notice
qinglong 需要更新 notice 文件,由于我只使用 Python 脚本,所以去 GitHub 下载新的 qinglong/sample/notify.py at develop · whyour/qinglong · GitHub

然后替换掉原来的就可以了。

通过观察 notify.py 文件,可以看到这样的内容

def pushme(title: str, content: str) -> None:
  
    # 使用 PushMe 推送消息。
   
    if not push_config.get("PUSHME_KEY"):
        print("PushMe 服务的 PUSHME_KEY 未设置!!\n取消推送")
        return
    print("PushMe 服务启动")

    url = f'https://push.i-i.me/?push_key={push_config.get("PUSHME_KEY")}'
    data = {
        "title": title,
        "content": content,
    }
    response = requests.post(url, data=data)

    if response.status_code == 200 and response.text == "success":
        print("PushMe 推送成功!")
    else:
        print(f"PushMe 推送失败!{response.status_code} {response.text}")
    

虽然里面用的是 post,不过其实我们把它转换一下,然后用 get 也是可以发送通知的。

https://push.i-i.me/?push_key=KEY&title=标题&content=内容
把这里的 KEY 换成自己的秘钥,然后把链接复制到浏览器访问一下,手机端就可以收到消息。

App下载

https://gitee.com/yafu/pushme/releases/latest
https://github.com/yafoo/pushme/releases/latest

手机设置

因为各安卓系统杀后台严重,所以尽量给与app最大权限:
权限管理:允许自启动、后台运行
电池耗电管理:允许后台高耗电(实际测试,并不高耗电)
通知管理:允许消息通知

其他注意事项:

部分手机需要关闭“网络优化”选项,否则app进入后台会被断网
部分手机需要锁定应用
部分手机不能在多任务界面划掉APP
Android12手机,需开启APP的alerm闹钟权限

提醒:以上三项设置后,可在多任务页面把APP划掉,只留服务在后台运行。建议把通知设置里StateChannel也打开,方便查看服务是否在线,如果想关闭通道通知,可以在PushMe左上角设置里关闭。

真机实测

  • OriginOS 3
    经实测,Vivo OriginOS3系统,睡眠模式下,会造成后台被杀,如果想保持24小时在线,需关闭睡眠模式(在电池管理->更多设置->睡眠模式),经实测,关闭睡眠模式后,夜里其他应用(如微信、头条)可能会耗电。
  • MIUI 14、Hyper OS
    经实测,小米MIUI14、Hyper OS系统,需在多任务页面,长按PushMe APP锁定应用,锁定后,即可把应用划拉掉,无需保持应用前台运行。
  • HarmonyOS 2
    经实测,华为HarmonyOS2,无法保证应用后台运行。
  • 其他品牌手机
    其他品牌手机没测试过,如果发现应用无法保活,建议像小米手机一样,长按APP锁定应用试试。

特别提醒
设置手机消息通知权限时,建议把StateChannel通知也打开,方便查看服务连接状态。如确定服务可以24小时自动在线,想关闭此通知的话,建议在PushMe APP的设置里关闭通道通知。

通过网络搜集整理


发现了问题

刚才发现notify已经过时了,搭建python用下面这个吧:
python的推送通知

你可能感兴趣的:(docker)