[开源]自建类 server 酱消息推送服务(附安卓客户端) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ochatokori
V2EX    分享创造

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

  •  
  •   ochatokori 2019-05-27 09:58:55 +08:00 10936 次点击
    这是一个创建于 2412 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    unknown scheme: null

    请问是什么问题?没找到 scheme 相关设置
    ochatokori
        24
    ochatokori  
    OP
       2020-01-03 19:08:20 +08:00 via Android
    @doomgiant 是在发送消息的时候设置了 scheme 字段吗?可能是设置为 null 了。不需要 scheme 的时候不用添加 scheme 字段

    有问题可以在 github 提 issues
    royburns
        25
    royburns  
       2020-03-25 16:37:30 +08:00
    可以做到支持微信吗?啊啊啊啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2425 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 08:51 PVG 16:51 LAX 00:51 JFK 03:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86