V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ochatokori
V2EX  ›  分享创造

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

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

    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   ·   实用小工具   ·   946 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 22:51 · PVG 06:51 · LAX 14:51 · JFK 17:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.