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

前言

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

猜你喜欢

转载自blog.csdn.net/qq_37406764/article/details/80591032