这次给大家带来Node.js如何开发微信墙,Node.js开发微信墙的注意事项有哪些,下面就是实战案例,一起来看一下。

验证服务器有效性

接收用户通过微信订阅号发给服务器的消息

解析收到的XML文本消息格式为JSON

用模板构造应答用户的XML文本消息

将接收到的消息通过WebSocket服务广播

获取消息发送人的用户基本信息(名字和头像)

微信服务大体上分为两类,一类是消息服务,一类是数据服务。

消息服务是由用户在微信服务号中发送消息,然后微信服务讲消息推送给开发者服务器,因此它是由微信主动发起,开发者服务器被动接收的。

消息服务的数据体格式是XML,微信服务与开发者服务器之间通过约定token保证数据传输的真实和有效性。//verify.jsvar PORT = 9529;var http = require('http');var qs = require('qs');var TOKEN = 'yuntu';function c

heckSignature(params, token){ //1. 将token、timestamp、nonce三个参数进行字典序排序

//2. 将三个参数字符串拼接成一个字符串进行sha1加密

//3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信var key = [token, params.timestamp, params.nonce].sort().join(''); var sha1 = require('crypto').createHash('sha1');

sha1.update(key);

return sha1.digest('hex') == params.signature;

}var server = http.createServer(function (request, response) {

//解析URL中的query部分,用qs模块(npm install qs)将query解析成json

var query = require('url').parse(request.url).query; var params = qs.parse(query); console.log(params); console.log("token-->", TOKEN);

if(checkSignature(params, TOKEN)){

response.end(params.echostr);

}else{

response.end('signature fail');

}

});

server.listen(PORT);console.log("Server runing at port: " + PORT + ".");

事实上,token验证仅用来给开发者服务器验证消息来源确实是微信,而不是伪造的(因为别人不知道具体的token),作为消息发起方的微信并不要求必须验证,也就是说,开发者也可以偷懒不做验证(后果是别人可以模仿微信给服务post请求)。//noverify.js/**

TOKEN 校验是保证请求的真实有效,微信自己并不校验TOKEN,

开发者服务器也可以不校验直接返回echostr,

但是这样的话意味着第三方也可以很容易伪造请求假装成微信发送给开发者服务器*/var PORT = 9529;var http = require('http');var qs = require('qs');var server = http.createServer(function (request, response) { var query = require('url').parse(request.url).query; var params = qs.parse(query);

response.end(params.echostr);

});

server.listen(PORT);console.log("Server runing at port: " + PORT + ".");

将微信服务号的服务器配置为开发服务器的URL,就可以接收到微信服务号的消息了

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

php微信墙开发,Node.js如何开发微信墙相关推荐

  1. node mysql商城开发_NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦

    NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦 发布时间:2020-04-14 04:23:37 来源:51CTO 阅读:2894 作者:ch10mmt 高仿网易严选的微信 ...

  2. Node.js+MySQL开发的B2C商城系统源码+数据库(微信小程序端+服务端),界面高仿网易严选商城

    下载地址:Node.js+MySQL开发的B2C商城系统源码+数据库(微信小程序端+服务端) NideShop商城(微信小程序端) 界面高仿网易严选商城(主要是2016年wap版) 测试数据采集自网易 ...

  3. 【微信小程序】小程序开发—node.js下载,npm配置以及组件使用

    目录 一.下载Node.js 二.微信开发者工具中安装Node.js 三.用Node.js中的npm安装vant组件 一.下载Node.js 1.官方下载地址:node.js官方下载地址 直接下载第一 ...

  4. 零基础开发 Node.js Addons 插件:参数与返回值处理

    上一篇回顾 零基础开发 Node.js Addons 插件:Hello Node-API.本篇介绍使用 Node-API 为 Node.js 开发基于 C 的 Addons 时,如何接收与处理 Nod ...

  5. node.js的开发流程_Node.js子流程:您需要了解的一切

    node.js的开发流程 by Samer Buna 通过Samer Buna Node.js子流程:您需要了解的一切 (Node.js Child Processes: Everything you ...

  6. 【Node.js】2.开发Node.js选择哪个IDE 开发工具呢

    安装完Node.js之后,就要为它选择一个有利的IDE用于开发. 相比较了多个IDE之后,定位在webstrom和sublime上. 有一个简单的比较: webstorm功能很丰富,前端开发工具的集大 ...

  7. 《Node.js入门》Windows 7下Node.js Web开发环境搭建笔记

    最近想尝试一下在IBM Bluemix上使用Node.js创建Web应用程序,所以需要在本地搭建Node.js Web的开发测试环境. 这里讲的是Windows下的搭建方法,使用CentOS 的小伙伴 ...

  8. 在Visual Studio上开发Node.js程序

    在Visual Studio上开发Node.js程序 原文:在Visual Studio上开发Node.js程序 [题外话] 最近准备用Node.js做些东西,于是找找看能否有Visual Studi ...

  9. 在Visual Studio上开发Node.js程序(2)——远程调试及发布到Azure

    [题外话] 上次介绍了VS上开发Node.js的插件Node.js Tools for Visual Studio(NTVS),其提供了非常方便的开发和调试功能,当然很多情况下由于平台限制等原因需要在 ...

最新文章

  1. qt windows 静态编译_VS+QT工程配置问题
  2. HPC System Design
  3. VTK:图片之ImageOpenClose3D
  4. 期货与期权(part8)--市场报价
  5. 数据告诉你:中年并不只有危机,创业或许正当时
  6. js 用下标获取map值_javascript怎么获取map的值?
  7. 人工智障学习笔记——深度学习(3)递归神经网络
  8. python3数据类型_python3中到底有几类数据类型?
  9. Java 面试之线程与锁
  10. Apache Ant 简介和配置
  11. three.js TextBufferGeometry创建3d文字(文字乱码问题解答)
  12. 一张思维导图带你快速了解深度学习推荐系统
  13. 《Java设计模式》之代理模式 -Java动态代理(InvocationHandler) -简单实现
  14. linux下安装redis 3.2.1
  15. puzzle(003)数字拼图、色块拼图
  16. Electron安装报错解决办法
  17. 心脏线绘制python_心脏线怎么画?
  18. 阿里鱼卡,腾讯王卡,百度圣卡,谁是流量卡中的性价比之王?
  19. Android Study
  20. 制作动图简易软件(附下载方式)

热门文章

  1. Android开发之 当前日期String类型转date类型 java代码中实现方法
  2. 【jquery】ajax 请求成功后新开窗口被拦截解决方法
  3. PIE SDK影像坏线修复
  4. spring-cloud Finchley.SR2版本 升级微服务到springboot 2.0
  5. SCCM 2016 客户端硬/软件资产收集 (一)
  6. 人工智能的策略,如果国家优先发展”梦想成真”?
  7. 微软职位内部推荐-Principal Development Lead
  8. 安装eclipse时遇到的问题
  9. linux 添加用户并指定shell类型
  10. Web ReplayType?