爱意满满的作品展示区。
ochatokori

[开源]自建类 server 酱消息推送服务(附安卓客户端)

  •  
  •   ochatokori · May 27, 2019 · 11947 views
    This topic created in 2727 days ago, the information mentioned may be changed or developed.

    Mpush

    前段时间因为 server 酱频繁故障(现在已经恢复服务了),就开始动手自己做一个消息推送服务了

    建起来之后基本上和 server 酱一模一样的使用方式

    Get http://127.0.0.1:port/devicename?title=test&content=content

    post 同理

    desp 字段改成了 content 字段

    相比于 server 酱优势

    • 任性,自己的服务器,想推多少条就推多少条,想推多少设备就推多少设备
    • 自由,没有微信的特殊字符限制,你甚至可以发送 emoji
    • 开放,代码公开,信息安全自己掌握
    • 快捷,通知直接显示消息内容而不是打开微信查看

    劣势

    • 后台需要单独运行一个客户端,占用内存 17MB 左右
    • 客户端暂时不支持显示 markdown
    • 网络环境复杂时实时性没有微信可靠,但能保证消息推送到客户端

    配置服务端

    • 编辑 config.js 填写 token 和端口,即可运行
    • 可以直接用 node main.js > ./log &
    • 或者使用 pm2
      pm2 start /path/to/main.js --name mpush --output /path/to/log -i 1
      

    安卓客户端

    • 设置页填写 url,token,设备 id 即可
    • 因为微博图床不能直接显示了预览就去 github 看吧,简单是简单了点,又不是不能用

    服务端的 README 有写通信方式,完全可以自建任何平台的客户端

    Github 地址

    要是能顺手给个小星星就更好了

    25 replies  •  2020-03-25 16:37:30 +08:00
    Fx8m
    Fx8m
    May 27, 2019
    1
    支持 mipush 就好了
    haozes
    haozes
    May 27, 2019
    2
    不错哦
    要特别授权给它自启动和无限制的电池策略,这个有点麻烦,而且这个如果用的人稍微有点多,服务器就得贵,可惜 ANDROID 国内没有统一的推送平台。
    ochatokori
    ochatokori
    OP
    May 27, 2019 via Android
    3
    @Fx8m #1 当初考虑过使用 mipush 和 fcm,只不过 mipush 对非 miui 环境不友好,fcm 在墙内也不方便,最好还是选择后台长连接了。考虑到耗电后台服务已经相当精简了
    auin
    auin
    May 27, 2019
    4
    然而我之前用 Server 酱唯一的原因就是微信
    ochatokori
    ochatokori
    OP
    May 27, 2019 via Android
    5
    @haozes #2 这个项目的定位是有需要的人自己搭建自己使用,其实也不会占用服务器很多资源

    自启动和电池策略这个,毕竟自己用没必要搞花里胡哨的保活
    cheese
    cheese
    May 27, 2019
    6
    @ochatokori #3 mipush 的第三方项目(非 miui,非小米手机使用 mipush )可用性已经非常高了,可以考虑加入 mipush 功能。
    第三方项目地址: https://github.com/MiPushFramework/MiPushFramework
    ochatokori
    ochatokori
    OP
    May 27, 2019 via Android
    7
    @cheese #6 谢谢,我会试一下
    Fx8m
    Fx8m
    May 27, 2019
    8
    加入 mipush 的话,起码 miui 可以使用系统级的推送了。无需后台
    jisibencom
    jisibencom
    May 27, 2019 via Android
    9
    能推送到个人微信号也行啊,或者 xposed 搞个插件?
    love
    love
    May 27, 2019
    10
    我用的自己写的一个类似 的,不过是用邮件协议,好处是不用搞自己的客户端,也不用但心手机内存颠簸导致后台被杀
    anubu
    anubu
    May 27, 2019
    11
    有一个开源的项目 gotify 可以参考一下: https://github.com/gotify/server
    ycr6708536
    ycr6708536
    May 27, 2019
    12
    @jisibencom 可以推送到企业微信的服务中~
    lizheming
    lizheming
    May 27, 2019
    13
    支持下楼主,同类产品还有 Bark 也非常不错的 https://github.com/Finb/Bark
    ochatokori
    ochatokori
    OP
    May 27, 2019 via Android
    14
    @love #10 发邮件不是会被封端口吗,至少腾讯云是回封的
    love
    love
    May 27, 2019
    15
    @ochatokori 不要用 25 口就行了啊
    love
    love
    May 27, 2019
    16
    @ochatokori 再说了,对于发的部分,如果你喜欢 http 的,也可以写 http 接口(类似你这个),收的部分用 pop 就行。 各大手机都有内置邮件接收软件,且用的是同步机制永远不用担心被杀后台。
    deorth
    deorth
    May 27, 2019
    17
    之前用的是 tg 的 bot,后来换了公司几乎不用 tg 了就改用了 server 酱。所以问题还是微信
    dabaibai
    dabaibai
    May 28, 2019 via iPhone
    18
    马克一下,谢谢
    zhensjoke
    zhensjoke
    May 29, 2019
    19
    加个接口就能推微信了...
    ochatokori
    ochatokori
    OP
    May 29, 2019
    20
    @zhensjoke #19 此话怎讲
    wtks1
    wtks1
    Jul 8, 2019 via Android
    21
    我来补一句,如果用 centos7 作为服务端,不要用 yum 源自带的 nodejs,因为版本不够会报错,还有就是如果没有做其他设置,客户端填连接地址的时候,是用 http 协议
    galenzhao
    galenzhao
    Aug 31, 2019
    22
    企业微信随便注册,推送不限内容
    doomgiant
    doomgiant
    Jan 3, 2020
    23
    @ochatokori

    hello,使用 2.0.1 版本,手机上填好信息保存后,提示

    unknown scheme: null

    请问是什么问题?没找到 scheme 相关设置
    ochatokori
    ochatokori
    OP
    Jan 3, 2020 via Android
    24
    @doomgiant 是在发送消息的时候设置了 scheme 字段吗?可能是设置为 null 了。不需要 scheme 的时候不用添加 scheme 字段

    有问题可以在 github 提 issues
    royburns
    royburns
    Mar 25, 2020
    25
    可以做到支持微信吗?啊啊啊啊
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2103 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 01:23 · PVG 09:23 · LAX 17:23 · JFK 20:23
    ♥ Do have faith in what you're doing.