资讯专栏INFORMATION COLUMN

微信小程序server-2-实现会话层

Eminjannn / 1680人阅读

摘要:安装安装及其客户端命令行工具查看版本启动创建目录,用于数据和日志存储启动注首次启动可能会花费大概时间可以使用下面的命令来检查是否启动成功注默认监听端口添加用户登录本地服务创建用户退出安装模块实现小程序的会话功能

1.安装MongoDB
#安装 MongoDB及其客户端命令行工具
yum install mongodb-server mongodb -y
#查看版本
mongod --version
mongo --version
2.启动 MongoDB
#创建目录,用于 MongoDB 数据和日志存储
mkdir -p /data/mongodb
mkdir -p /data/logs/mongodb
#启动 MongoDB   注:首次启动可能会花费大概 1min 时间
mongod --fork --dbpath /data/mongodb --logpath /data/logs/mongodb/wxpro.log
#可以使用下面的命令来检查是否启动成功  #注:MongoDB 默认监听 27017 端口
netstat -ltp | grep 27017
3.添加 MongoDB 用户
#登录本地 MongoDB 服务
mongo
#创建用户wxpro
use wxpro;
db.createUser({ user: "wxpro", pwd: "wxpro****", roles: ["dbAdmin", "readWrite"]});
#退出
exit
4.安装 Node 模块

实现小程序的会话功能,我们需要安装 connect-mongo
和 wafer-node-session

cd /var/www/wxpro/
npm install connect-mongo wafer-node-session --save
5.实现小程序会话
#创建配置文件config.js
module.exports = { 
    serverPort: "8765", 
    // 小程序 appId 和 appSecret 
    // 请到 https://mp.weixin.qq.com 获取 AppID 和 AppSecret
    appId: "YORU_APP_ID", 
    appSecret: "YOUR_APP_SECRET", 

    // mongodb 连接配置,生产环境请使用更复杂的用户名密码
    mongoHost: "127.0.0.1", 
    mongoPort: "27017", 
    mongoUser: "wxpro", 
    mongoPass: "wxpro****", 
    mongoDb: "wxpro"
};
#编辑app.js,添加会话实现逻辑
// 引用 express 来支持 HTTP Server 的实现
const express = require("express");
// 引用 wafer-session 支持小程序会话
const waferSession = require("wafer-node-session"); 
// 使用 MongoDB 作为会话的存储
const MongoStore = require("connect-mongo")(waferSession); 
// 引入配置文件
const config = require("./config"); 

// 创建一个 express 实例
const app = express();

// 添加会话中间件,登录地址是 /login
app.use(waferSession({ 
    appId: config.appId, 
    appSecret: config.appSecret, 
    loginPath: "/login",
    store: new MongoStore({ 
        url: `mongodb://${config.mongoUser}:${config.mongoPass}@${config.mongoHost}:${config.mongoPort}/${config.mongoDb}` 
    }) 
})); 

// 在路由 /me 下,输出会话里包含的用户信息
app.use("/me", (request, response, next) => { 
    response.json(request.session ? request.session.userInfo : { noBody: true }); 
    if (request.session) {
        console.log(`Wafer session success with openId=${request.session.userInfo.openId}`);
    }
}); 

// 实现一个中间件,对于未处理的请求,都输出 "Response from express"
app.use((request, response, next) => {
    response.write("Response from express");
    response.end();
});

// 监听端口,等待连接
app.listen(config.serverPort);

// 输出服务器启动日志
console.log(`Server listening at http://127.0.0.1:${config.serverPort}`);
#重启服务
pm2 restart app

重启后,使用配套的小程序完成会话测试:打开配套小程序 - 点击 实验二:会话 - 获取会话,如果您能看到您的微信头像,那就表示会话已经成功获取了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19052.html

相关文章

  • 信小程序会话处理

    摘要:是一个用于处理微信小程序的,实现思路参照了腾讯云官方微信小程序云端解决方案中的会话管理场景,即这个是其版本的一种实现。 WechatAppSessionBundle 是一个用于处理微信小程序的 Symfony Bundle,实现思路参照了腾讯云官方-微信小程序云端解决方案中的 会话管理场景,即这个 Bundle 是其 PHP(Symfony) 版本的一种实现。(只是不知道国内有多少使用...

    hoohack 评论0 收藏0
  • 理解小程序

    摘要:小程序的布局信息微信小程序中使用作为长度单位,可以根据屏幕宽度进行自适应。运行环境普通都是执行在浏览器的宿主环境,浏览器提供等对象但是小程序是运行在微信上下文中的,没有和。 小程序坚持着 无需下载、触手可及、用完即走的设计理念和价值观,帮助用户缩短完成任务的时间。下面从以下几点进行总结。总结是参考三清水老师的小册子,推荐大家去购买。写的很棒。 1. 小程序能做什么,不能做什么? sho...

    dmlllll 评论0 收藏0
  • 信小程序初探

    摘要:在微信小程序中,要更新视图就只能修改,而视图层也只能通过事件向逻辑层传递交互信息。页面移植到微信小程序要修改的地方也还比较多,主要是标签和的交互及小程序提供的功能部分。 小程序是一种不需要下载安装即可使用的应用,它实现了应用「触手可及」的梦想,用户扫一扫或搜一下即可打开应用。也体现了「用完即走」的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。 —...

    teren 评论0 收藏0
  • 从前端界面开发谈信小程序体验

    摘要:在开发之前你要有微信开发者工具。同时为了更适合开发微信小程序,还对进行了扩充以及修改,直接帮我们把适配的一部分工作都做了,比如他的,可以根据屏幕宽度进行自适应,规定屏幕宽为。 本文由云+社区发表 这段时间有幸加入了一个关于微信小程序的项目开发组,从无到有的根据文档自行学习了小程序的开发过程,前面已经有几位前辈的文章珠玉在前,我这里就先从前端界面的开发方面谈一谈小程序以及我所遇到的问题吧...

    hellowoody 评论0 收藏0
  • 一些知识点的记录

    摘要:框架提供了一套基础的组件,这些组件自带微信风格的样式以及特殊的逻辑,开发者可以通过组合基础组件,创建出强大的微信小程序。 关于微信小程序 框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑。框架的核心是一个响应的数据绑定系统。整个小程序框架系统分为两部分:视图层...

    leejan97 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<