10分钟上线 - 利用函数计算构建微信小程序的Server端

本文涉及的产品
简介: 阿里云函数计算是一个事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。微信小程序是一种不需要下载安装即可使用的应用,它可以在微信内被便捷地获取和传播。 当微信小程序遇见serverless,他们会产生奇妙火花,利用函数计算可以快速搭建微信小程序的server.

前言

这篇文章适合所有的想微信小程序开发新手、老鸟以及想准备学习开发微信小程序的程序猿。本文以开发一个类似"语音口令红包“小程序为例,向您讲解如何使用阿里云函数计算快速构建微信小程序的服务端。通过本文,您将会了解以下内容:

demo概览

在本教程中,我们讲解如何利用函数计算一步一步来构建微信小程序的server端,其中小程序参考"口令红包", 实现一个简单版本,该demo中可以展示口令生成,口令转发,口令语音验证。

微信语音红包小程序是基于微信小程序而开发的语音红包,发起者可以写下想要让别人说的话(口令),并且将钱塞入此红包中,其他用户只要读出这句话(口令)就可以获得红包。语音红包可以发到特定的好友、微信群以及朋友圈,朋友需要根据文字口令说出相应的语音,才能获得红包。这种互动行为,在朋友圈或者微信群社交的场景下,可以极大调动互动活跃度,规则简单方便,体验趣味十足,口令的形式丰富多样(恶搞、示爱、祝贺、说口号、甚至是广告语),这些都让口令红包一直维持很高的热度。

demo客户端小程序具体效果截图如下:
  • 生成口令
    image
  • 转发口令
    image
  • 录音验证口令
    image

传统服务器架构 VS Serverless架构

正常来说,除了少数纯客户端的微信小程序运用,绝大部分的小程序都有自己的server端。用户开发server端服务,常常面临开发效率,运维成本高,机器资源弹性伸缩等痛点,而使用Serverless架构可以很好的解决上述问题。下面是传统架构和Serverless架构的对比:

Item Serverless 传统方式搭建服务
维护成本 维护成本低,无需管理服务器等基础设施,只需编写代码并上传,程序员从底层设备维护中解放出来,只考虑实际业务逻辑即可。 维护成本高,自行维护服务器,需要处理服务器宕机、服务器扩容等一系列底层琐碎的事情
可用性 可用性高,函数计算为用户准备弹性、可靠的计算资源,具有根据流量自动scale特性,对有明显波峰波谷的运用效果奇佳 服务器故障会对应用服务产生严重影响
费用 按需付费,只为实际使用的计算资源付费,代码未运行则不产生费用 需要支付服务器的费用,代码运行与否都要收费

阿里云函数计算是一个事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询,性能监控,报警等功能。借助于函数计算,您可以快速构建任何类型的应用和服务,无需管理和运维。

Serverless架构详解

image

方案大致如上图所示, 主要分为以下三个模块:

  • Login & Auth

微信建议登录时序图如下, 其中第三方服务器用FC实现:
image

  • 语音识别(包含音频格式转换)

ffmpeg进行音频格式转换
百度语言识别开发文档

  • 方案图下部虚线框柱的是可以拓展的模块,本demo中不展示,用户可以根据需求接入

比如微信小程序直接上传文件到oss保存,函数计算可以从oss拉取对应的数据做处理;如果需要数据库功能,可以采用ots

demo开发配置步骤

准备工作:

1,开通阿里云账号,同时需要开通的产品有函数计算, api网关

2,购买独立域名,同时需对域名备案,以及购买阿里云免费ssl证书,购买步骤可参考免费申请阿里云DV SSL证书

3,开通微信小程序开发认证,以及百度语音识别

4,从github下载相应的源码,里面client目录表示客户端,server表示用于创建函数。

FC端

1,利用源码中的server目录创建服务端函数,比如函数名为wechatEntry,有以下两种方案创建函数:

  • 利用控制台打包上传,设置对应的handler, 函数计算控制台使用可参考hello world, 特别是控制台上传代码包创建函数部分。下面是重要步骤截图:
    image

image

  • 函数计算熟悉fcli的工具的老用户可以使用函数计算命令行工具fcli, fcli使用说明
    fcli function create -f wechatEntry -h main.handler -d server -t python2.7 -s wechat

注意:上面两种方案创建函数之前都需先把函数中main.py中相关开发配置改成自己申请的,包括微信小程序开发者相关配配置百度语音识别相关配置

2, 以函数计算作为 API 网关后端服务

image
image

client端
  • 按照微信小程序官方教程,创建对应的小程序账号以及工程,需要注意的是要把api网关中配置的域名添加到微信小程序的开发配置中:
    image
  • 直接用微信小程序开发工具打开,修改对应请求域名和appid即可,打开如下图所示:
    image

image

总结

利用函数计算可以快速搭建微信小程序的serverless运用,结合oss,ots可以丰富server的功能,免服务器,免运维,成本低,不用担心流量,只需要函数就可以实现,你值的拥有!

github源码地址

一些补充FAQ, 仅供参考

怎么调试fc?

fc可以接入sls,通过sls日志,可以查看你函数运行的情况,具体可以参考函数访问日志服务

如果录入的语音文件很大,时间很长,导致语音识别服务时间很长,怎么办?

可以参考函数计算流式处理大文件的分治思想对语音分割进行流式处理,或者直接选用有流式处理的语音识别的服务。

如果想对语音文件或者其他文件做备份处理,怎么办?

可以参考微信小程序中客户端utils文件夹下面的uploadAliyun.js

声明

  • 微信小程序使用的图片和部分样式素材来自互联网,在此声明,这个demo仅仅是做学习交流展示使用,并没有涉及商业化,如果原作者看到,请在文章下面留言或者给我发邮件,我注明引用地址。
  • 欢迎大家通过扫码加入我们用户群中,搭建过程中有问题或者有其他问题可以在群里提出来。

image

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
6天前
|
jenkins Devops 机器人
【DevOps】(五)Jenkins构建给企业微信推送消息
【DevOps】(五)Jenkins构建给企业微信推送消息
17 1
|
2月前
|
关系型数据库 Serverless 分布式数据库
PolarDB PostgreSQL版Serverless功能上线公测啦,公测期间免费使用!
Serverless数据库能够使得数据库集群资源随客户业务负载动态弹性扩缩,将客户从复杂的业务资源评估和运维工作中解放出来。PolarDB PostgreSQL版 Serverless提供了CPU、内存、存储、网络资源的实时弹性能力,构建计算与存储分离架构下的 PolarDB PostgreSQL版产品新形态。
|
1月前
|
前端开发 JavaScript Go
Go 实战|使用 Wails 构建轻量级的桌面应用:仿微信登录界面 Demo
Wails 框架提供了一种简洁而强大的方式,让开发者能够利用 Go 的性能优势和 Web 前端的灵活性,从而能够使用更高效、更轻量级的方法来构建跨平台的桌面应用。本文探讨 Wails 框架的使用,从搭建环境到开发,再到最终的构建打包。
45 1
Go 实战|使用 Wails 构建轻量级的桌面应用:仿微信登录界面 Demo
|
2月前
|
关系型数据库 Serverless 分布式数据库
Serverless 应用引擎常见问题之在抖音快手小程序上使用如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
24 3
|
8月前
|
存储 JSON 小程序
【小程序云开发】不用后端也能构建完整的微信小程序
本文介绍了如何从零开始学习和掌握微信小程序云开发,包括云函数、云数据库和HTTP触发等重要概念。通过详细的步骤和示例,读者将学会如何创建和部署云函数,以及如何使用云数据库来存储和管理小程序的数据。同时,本文还介绍了如何通过HTTP触发器实现小程序与外部API的数据交互,从而为小程序开发提供更灵活、高效的后端解决方案。无论您是初学者还是有一定经验的开发者,本文都将帮助您轻松掌握微信小程序云开发,并为您的小程序开发项目提供更多可能性。
368 0
|
3月前
|
小程序 IDE Serverless
【经验分享】支付宝小程序serverless云开发拓荒
【经验分享】支付宝小程序serverless云开发拓荒
91 0
|
4月前
|
弹性计算 Serverless 开发者
Serverless 应用引擎问题之镜像构建失败如何解决
在进行Serverless应用开发和部署时,开发者可能会遇到不同类型的报错信息;本合集着重收录了Serverless环境中常见的报错问题及其解决策略,以助于开发者迅速诊断和解决问题,保证服务的连续性和可用性。
459 2
|
4月前
|
前端开发 JavaScript 小程序
亚马逊云科技 Build On -Serverless低代码平台初体验-快速完成vue前端订单小程序
亚马逊云科技 Build On -Serverless低代码平台初体验-快速完成vue前端订单小程序
55 0
|
4月前
|
关系型数据库 Serverless 数据库
基于DTS Serverless构建一站式实时数据集成服务
在企业的数字化转型背景下,企业需要数据中台数据实时集成,提升数据分析的时效性。DTS推出了从数据库将业务数据实时同步到数据仓库的解决方案,帮助客户挖掘商机,调整商业策略。同时,为了解决在客户业务负载多变的情况下灵活稳定支持数据传输的问题,DTS推出了Serverless版本,支持按需自动弹性伸缩链路规格,客户可以按需付费,无需关心底层资源。此外,DTS还提供了数据校验的增值能力,帮助检验数据一致性,以免影响客户业务决策的准确性
50219 1
|
5月前
|
机器学习/深度学习 运维 安全
阿里云 ACK One Serverless Argo 助力深势科技构建高效任务平台
阿里云 ACK One Serverless Argo 助力深势科技构建高效任务平台
101186 8

热门文章

最新文章

相关产品

  • 函数计算