热门标签 | 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


推荐阅读
  • 本文详细介绍了如何在 Windows 环境下使用 node-gyp 工具进行 Node.js 本地扩展的编译和配置,涵盖从环境搭建到代码实现的全过程。 ... [详细]
  • 自 Node.js 6.3 版本起,调试功能已内置在核心模块中,无需额外安装 node-inspector 等工具。通过简单的命令即可启动调试模式,并利用 Chrome 浏览器进行高效的代码调试。 ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文探讨了领域驱动设计(DDD)的核心概念、应用场景及其实现方式,详细介绍了其在企业级软件开发中的优势和挑战。通过对比事务脚本与领域模型,展示了DDD如何提升系统的可维护性和扩展性。 ... [详细]
  • 在项目部署后,Node.js 进程可能会遇到不可预见的错误并崩溃。为了及时通知开发人员进行问题排查,我们可以利用 nodemailer 插件来发送邮件提醒。本文将详细介绍如何配置和使用 nodemailer 实现这一功能。 ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 本文介绍如何在Linux系统中卸载预装的OpenJDK,安装指定版本的JDK 1.8,并配置防火墙以确保系统安全性和软件兼容性。 ... [详细]
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社区 版权所有