NodeJS为GBlog-wx小程序增加推送功能

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: NodeJS为GBlog-wx小程序增加推送功能

项目来由

首先感谢fuzui开源的GBlog-wx小程序项目,

starstar

用于halo博客,继上次 PR 的海报功能,总体来说,作为一个个人博客的小程序端已经很完善了,看到在评论处设有留言回复通知(这个是用于邮件通知),由于我一般很少打开邮箱,就想到了微信推送,另外在海报功能处用到了云函数生成小程序码,考虑到免费用户的月额度有限,于是也一并写成了接口。

功能预览

安装

git clone https://gitee.com/ufec/GBlog-wxpush.git

运行

npm install
npm start                //默认端口5000,可在package.json文件中修改
node /utils/schedule.js  //启动定时器程序

这里用宝塔PM2 管理器作为演示

run.webp

不用宝塔也可以,后台挂起这两个服务(或者使用 nodejs 的 forever/nodemon 模块),主服务用 nginx 反向代理即可实现一样的效果。

需要服务器可以入手腾讯云,618 优惠 1 核 2G1M50G 硬盘,标准型 SA2 服务器三年 288RMB
腾讯云服务器

用户端效果

111.webp

实现过程

项目由 NodeJS + MongoDB + Redis 构成,搭建方便,性能高效,快速开发。

目录结构

├── app.js                   //主程序
├── config                   //配置目录
│   ├── config.js            //主要配置
│   ├── database.js          //数据库配置
│   └── log4js.json          //日志配置
├── db                       //数据库目录
│   ├── collection           //数据模型
│   │   ├── article.js       //文章模型
│   │   └── comment.js       //评论模型
│   └── db.js                //数据库文件
├── log                      //日志目录
├── package.json
├── routes                   //路由文件目录
│   ├── article.js           //文章路由
│   ├── comment.js           //评论路由
│   ├── getOpenId.js         //获取用户openid路由
│   └── getQRCode.js         //生成小程序码路由
└── utils                    //功能
    ├── getToken.js          //获取微信AccessToken
    ├── log.js               //初始化日志配置
    ├── redis.js             //redis
    ├── schedule.js          //定时器
    ├── sendMsg.js           //下发模板信息

用到的模块:

express
fs
log4js
mongoose
node-schedule
path
redis
request

项目共有两个推送功能:留言审核和新作品推荐,需要前往小程序后台
功能->订阅消息处添加,格式如下图
comment.webp

article.webp

!注:由于发送信息格式写死,请务必按照上图添加

app 为项目主服务,主要用于接收处理用户请求,utils/schedule 为项目的推送服务,用于定时定点发送(此项目定于每天晚上 21:30:30 执行,一般那个时候都下班了),你也可以自定义,详见 node-schedule 文档
routes 下为项目路由,comment 为评论订阅,article 为文章订阅,其他两个就显而易见。

更多选项

你可以更改 halo 博客的微信分享功能,如下图:

微信分享
这是基于寒山主题的修改版本,前提是小程序为GBlog-wx
做如下修改:
在 post.ftl 的最后一行添加如下代码

<script>
  var img = null;
  var articleId = ${post.id?c};
  function share(e){
    $.ajax({
      url: "你的服务端地址/getQRCode?scene=id="+articleId+"&page=pages/details/index",
      success:function(result){
          img.attr('src', result.base);
      }
    });
  }

  $(document).ready(function () {
    img = $("div.social-share > a.social-share-icon.icon-wechat > div.wechat-qrcode > div.qrcode > img");
  });
</script>

并在 74 行添加

onclick="share(this);">

80 行改为如下内容

<div class="social-share" data-disabled="${settings.share_disabeld!''}" data-wechat-qrcode-title="打开微信扫一扫" data-wechat-qrcode-helper="添加到我的小程序,更方便"></div>

即可实现。

一些可能的 Bug

7.webp

  • 当你看到生成小程序码出现如图所示,他明显不是一个正确的小程序码,但为什么
    结果还是 0?,这....这我遇到了好多次,原因是在你的 token 重复获取,导致上一次的 token 失效,这个有待更新,解决的方法就是:本地调试无误后上传程序到服务端运行,本地不要再获取 token,如有必要测试,请测试完成后务必删除缓存中的 token,设置的有效期与微信官方给出的一致,为:7200。在程序运行期间可能出现延迟等种种问题,你可以将他改为 3600,
  • 文章标题建议尽量简短,微信限制为 20 个字(服务以及做了处理,但为了用户体验请在发布时斟酌)。

项目地址
Ufec/GBlog-wxpush

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8月前
|
小程序
微信小程序如何实现进入小程序自动连WiFi功能
微信小程序如何实现进入小程序自动连WiFi功能
235 0
|
10天前
|
移动开发 小程序 前端开发
几千怎么部署搭建校园服务平台,校园圈子论坛系统小程序搭建,校园系统源码,多种功能一体的综合性校园平台
校园圈子论坛是一款集交友、二手市场、聊天等多功能于一体的校园社交平台,支持App、小程序和H5三端交付。学生可处理闲置物品、结识新朋友,通过算法匹配兴趣相投的用户。平台提供分享邀请机制,支持自动绑定推荐关系,并设有奖励机制。开发过程中需注重数据安全与系统稳定性,确保功能兼容及性能优化。
53 5
|
10天前
|
移动开发 小程序 前端开发
使用php开发圈子系统特点,如何获取圈子系统源码,社交圈子运营以及圈子系统的功能特点,圈子系统,允许二开,免费源码,APP 小程序 H5
开发一个圈子系统(也称为社交网络或社群系统)可以是一个复杂但非常有趣的项目。以下是一些关键特点和步骤,帮助你理解如何开发、获取源码以及运营一个圈子系统。
77 3
|
14天前
|
小程序 安全 搜索推荐
陪玩小程序的搭建解析与功能需求
陪玩小程序是为玩家提供专业陪玩服务的应用,嵌入社交或游戏平台,具备智能匹配、实时聊天、预约服务等功能,支持便捷高效的游戏体验。源码交付时需提供详细文档、技术支持及定制开发服务,确保客户能顺利维护和升级。选择陪玩小程序时应关注功能需求、用户体验、安全性和成本效益,以确保最佳使用效果。
37 0
|
10天前
|
小程序 安全 网络安全
清晰易懂!陪玩系统源码搭建的核心功能,陪玩小程序、陪玩app的搭建步骤!
陪玩系统源码包含多种约单方式、实时语音互动、直播间与聊天室、大神申请与抢单、动态互动与社交及在线支付与评价等核心功能。搭建步骤包括环境准备、源码上传与解压、数据库配置、域名与SSL证书绑定、伪静态配置及后台管理。注意事项涵盖源码安全性、二次开发、合规性和技术支持。确保平台安全、合规并提供良好用户体验是关键。
|
2月前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
3月前
|
存储 自然语言处理 小程序
微信小程序多语言切换神器:简繁体切换功能完全指南
随着全球化的发展,支持多种语言的应用程序愈发重要。本文介绍了如何在微信小程序中实现简体与繁体字体之间的切换功能,以满足不同地区用户的需求。通过创建utils文件夹并编写相应的转换函数,开发者可以方便地实现语言切换,从而提升用户体验。文章中还附带了示例代码和效果图,帮助读者更好地理解和应用这一功能。
117 0
微信小程序多语言切换神器:简繁体切换功能完全指南
|
3月前
|
小程序 Linux Python
查找首字母与Python相关的的英文词汇小程序的续篇---进一步功能完善
查找首字母与Python相关的的英文词汇小程序的续篇---进一步功能完善
31 1
|
5月前
|
Web App开发 缓存 小程序
【Azure API 管理】从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
【Azure API 管理】从微信小程序访问APIM出现200空响应的问题中发现CORS的属性[terminate-unmatched-request]功能
|
5月前
|
小程序 前端开发 开发者