热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Node.js微信开发一——把自己的Ubuntu搭建成微信服务器

前言Node.js是一个Javascript运行环境(runtimeenvironment),发布于2009年5月,由RyanDahl开发,实质是对ChromeV8引擎进行了
前言
Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。
V8引擎执行Javascript的速度非常快,性能非常好。Node.js是一个基于Chrome Javascript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用 事件驱动, 非阻塞 I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
最近要学习Node.js开发服务器是一个头疼的问题,经过钻研和参考大量博客后采用如下方法

搭建环境:

Ubuntu 18.04 64位 系统 

准备工作

1.安装nodejs及其包管理工具
$ sudo apt-get install nodejs
$ sudo apt-get install npm
2.在本地使用nodejs的koa框架编写微信接口

在自己的项目目录下安装nodejs的koa和sha包

/Project$ sudo npm install koa sha1
在自己的项目目录下建立文件app.js(微信的入口文件)以及wechat目录下的g.js

app.js代码如下

var Koa = require('koa')
var wechat = require('./wechat/g')
var cOnfig= {
	wechat: {
		appID: '',
		appSecret: '',
		token:''
	}
}

var app = new Koa()


app.use(wechat(config.wechat))

app.listen(3001)//此地可以设置为其他端口,只要没有其他进程占用

g.js

var sha1 = require('sha1')


module.exports = function (opts) {
	return function *(next) {
		console.log(this.query)
		var token = opts.token
		var signature = this.query.signature
		var nOnce= this.query.nonce
		var timestamp = this.query.timestamp
		var echostr = this.query.echostr
		var str = [token, timestamp, nonce].sort().join('')
		var sha = sha1(str)


		if (sha === signature) {
			this.body = echostr + ''
		}
		else {
			this.body = 'wrong'
		}
	}
}
/Project$ $ node --harmony app.js
koa deprecated Support for generators will be removed in v3. See the documentation for examples of how to convert old middleware https://github.com/koajs/koa/blob/master/docs/migration.md app.js:16:5

测试没问题

本地ip映射到内网

方法一

nodejs的localtunnel包

/Project$ npm install -g localtunne
/Project$ $ lt --port 3001

这样可以把本地的端口号映射到外网上并且动态分配一个URL

your url is: https://pretty-goose-2.localtunnel.me

但是由于localtunnel是国外项目速度很慢而且很容易崩所以建议用一下的方法

Error: connection refused: localtunnel.me:40982 (check your firewall settings)

方法二zuul-ngrok反向代理

$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
$ unzip ngrok-stable-linux-amd64.zip
$ ./ngrok http 3001

但是这样每次都需要申请一次很不方便

方法三

在http://center.tunnelnat.com上申请一个免费的ngrok代理会获取一个永久的域名



最后链接测试号


链接成功后在自己本机终端上会接受到你在微信测试号中发出的所有请求


这样自己本机的Ubuntu就可以作为微信服务器了,非常nice


推荐阅读
  • JavaScript和Python是用于构建各种应用程序的两种有影响力的编程语言。尽管JavaScript多年来一直是占主导地位的编程语言,但Python的迅猛发展有 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • JavaScript简介及语言特点
    本文介绍了JavaScript的起源和发展历程,以及其在前端验证和服务器端开发中的应用。同时,还介绍了ECMAScript标准、DOM对象和BOM对象的作用及特点。最后,对JavaScript作为解释型语言和编译型语言的区别进行了说明。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 这篇文章给大家介绍怎么从源码启动和编译IoTSharp ,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。IoTSharp项目是 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • AstridDAO 专访:波卡稳定币黑马 BAI
    加入Pol ... [详细]
  • 前言:原本纠结于Web模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中ev ... [详细]
  • 技术周报·2021-05-07-小编推荐向现代Javascript转型原文标题:Publish,ship,andinstallmodernJavaScriptforfaste ... [详细]
  • OrbitDBPeer 2 Peer Database using CRDTs
    2019独角兽企业重金招聘Python工程师标准Apeer-to-peerdatabaseforthedecentralizedwebOrbitDBisaserverless ... [详细]
author-avatar
mobiledu2502917563
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有