微信小程序实时通信聊天室应用

本应用示例使用Coolpy7作为Mqtt服务器并启用Websocket代理完美支持高并发大流量即时通过能力,本示以微信小程序即时通信聊天为例。并以阿里云ECS为服务器端缩主架构整套系统。并支持TLS连接通信加密,商业应用安全组别。

应用架构简介

系统关系示意

微信小程序->域名转向->(阿里云[Coolpy7_ws_tls=>Coolpy7_ws代理服务=>Coolpy7核心服务端])由核心服务进行多个客户端消息广播。

系统程序架构

  1. MQTT服务端程序(Coolpy7)

  2. WebSocket代理服务端 (Coolpy7_ws)

  3. WebSocket TLS代理服务端(Coolpy7_ws_tls)

  4. 微信小程序聊天室前端 开源地址:https://github.com/Coolpy7/wxsmallapp

安装与部署

1.阿里云ECS相关配置

本文以ubuntu 16.04为例,并安装好git工具。并配置好域名指向,本例中使用的是i.coolpy.net域名。需要确认系统防火墙放行该端口

由于TLS加密通信代理服务端需要用到域名的证书才可正常通过微信小程序的域名验证,微信小程序在正式发布要要求必需是TLS加密通信通道才可以上线发布。所以先到阿里云下载自己的域名证书。登陆阿里云控制台进入SSL证书功能页->证书购买页

进入SSL证书功能
选择免费证书并购买

购买完成后在已签发功能可以下载相应的证书

解压后把pem和key文件改名为server.key和server.pem备用。

2.运行Coolpy7核心服务

通过ssh进入服务器i.coolpy.net,并确保你已经按照 https://coolpy7.gitbook.io/coolpy7book/kai-shi-shi-yong/start 配置服务器操作系统的网络优化配置。执行如下指令进行程序部署及运行

# 下载服务器端
git clone https://github.com/Coolpy7/Coolpy7.git && cd Coolpy7
# 解压文件
unzip go_build_Coolpy7_go_linux.zip
# 提权
chmod -R 777 go_build_Coolpy7_go_linux
# 启动Coolpy7 启动参数
# l 当前服务Host地址 (默认为:1883即本地1883端口,无需配置)
./go_build_Coolpy7_go_linux
# 启动成功后会打印如下信息,即说明服务端已正常启动,host于1883端口
2018/10/29 12:59:55 Coolpy7 tcp is listening on [::]:1883

一般需为程序提权才可以运行Linux服务,指令:chmod -R 777 go_build_Coolpy7_go_linux

运行Coolpy7 WS代理服务

此功能即为Coolpy7核心服务提供WebSocket接入功能。执行如下指令进行程序部署及运行

# 解压文件
unzip go_build_Coolpy7_ws_go_linux.zip
# 提权
chmod -R 777 go_build_Coolpy7_ws_go_linux
# 启动Coolpy7 WS Poxy
# l启动参数 当前服务Host地址 (默认为:8083即本地8083端口,无需配置)
./go_build_Coolpy7_ws_go_linux
# 启动成功后会打印如下信息,即说明服务端已正常启动,host于8083端口
2018/10/29 12:59:55 upstream 192.168.200.201:1883 ok
2018/10/29 12:59:55 Coolpy7 ws is listening on [::]:8083

运行Coolpy7 WS-TLS代理服务

此功能即为Coolpy7核心服务提供WebSocket接入功能提供TLS代理功能。执行如下指令进行程序部署及运行

# 下载CP7 WS TLS代理 服务器端
git clone https://github.com/Coolpy7/Coolpy7-WS-TLS-Poxy.git && cd Coolpy7-WS-TLS-Poxy/bin
# 提权
chmod -R 777 go_build_Coolpy7_ws_tls_go_linux_linux
# 启动Coolpy7 ws tls poxy
# r启动参数 CP7 WebSocket 代理服务器所在ip或域名
# l启动参数 当前服务Host地址 (默认为:8084即本地8084端口,无需配置)
./go_build_Coolpy7_tls_go_linux_linux -r=192.168.200.203:8083
# 启动成功后会打印如下信息,即说明服务端已正常启动,host于8084端口
2018/10/29 12:59:55 upstream 192.168.200.203:8083 ok
2018/10/29 12:59:55 Coolpy7 TLS proxy is listening on [::]:8084

至此服务器端所有程序已就绪,以下部分开始回到本机进行开发测试工作。

微信小程序聊天室示例源码调试运行

1.下载聊天室源码

git clone https://github.com/Coolpy7/wxsmallapp.git && cd wxsmallapp

2.使用微信小程序开发工具导入项目选择git下载完毕源代码中的wxsmallapp,由入时会提示AppID相关登陆问题,请转换回阁下自己的微信公众平台中小程序开发的相关信息即可。

修改源代码pages/room/room.js文件第25行源代码,把127.0.0.1改为域名i.coolpy.net(本例域名)端口号改为Coolpy7_ws_tls代理服务端口号:把8083改为8084

客户端修改完成,以下为测试应用相关效果。

本示例所有应用均已经支持商业应用级别,安全及并发量都已达到商业应用标准,相关技术文档请参阅Coolpy7官方网站。以下是如关开源项目地址:

Coolpy7及Coolpy7_ws开源地址:https://github.com/Coolpy7/Coolpy7

Coolpy7_ws_tls开源地址:https://github.com/Coolpy7/Coolpy7-WS-TLS-Poxy

微信小程序客户端开始地址:https://github.com/Coolpy7/wxsmallapp