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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章