微信云托管是微信团队联合腾讯云团队提供的以云原生为基础的免运维、高可用服务上云解决方案,无需服务器,1分钟即可部署小程序/公众号服务端。
PC 端访问 https://cloud.weixin.qq.com 即可立即开始使用微信云托管,新用户首个环境赠送 3 个月免费额度。
https://github.com/WeixinCloud/wxcloudrun-express
|.dockerignore
|.gitignore
|container.config.json
|db.js
|Dockerfile
|index.html
|index.js
|LICENSE
|package.json
|README.md
express-ws
const path = require('path')
const express = require('express')
const cors = require('cors')
const morgan = require('morgan')
const { init: initDB, Counter } = require('./db')
const logger = morgan('tiny')
const app = express();
const expressWs = require('express-ws')(app);
const clients = expressWs.getWss('/').clients
app.ws('/', function (ws, req) { });
app.use(express.urlencoded({ extended: false }))
app.use(express.json())
app.use(cors())
app.use(logger)
// 首页
app.get('/', async (req, res) => {
res.sendFile(path.join(__dirname, 'index.html'))
})
// 更新计数
app.post('/api/count', async (req, res) => {
const { action } = req.body
if (action === 'inc') {
await Counter.create()
} else if (action === 'clear') {
await Counter.destroy({
truncate: true
})
}
//数据改变后将结果推送至客户端
for (let c of clients) {
c.send(await Counter.count())
}
res.send({
code: 0,
data: await Counter.count()
})
})
// 获取计数
app.get('/api/count', async (req, res) => {
const result = await Counter.count()
res.send({
code: 0,
data: result
})
})
// 小程序调用,获取微信 Open ID
app.get('/api/wx_openid', async (req, res) => {
if (req.headers['x-wx-source']) {
res.send(req.headers['x-wx-openid'])
}
})
const port = process.env.PORT || 80
async function bootstrap() {
await initDB()
app.listen(port, () => {
console.log('启动成功', port)
})
}
bootstrap();
{
"containerPort": 80,
"dockerfilePath": "Dockerfile",
"buildDir": "",
"minNum": 0,
"maxNum": 10,
"cpu": 1,
"mem": 2,
"policyType": "cpu",
"policyThreshold": 80,
"envParams": {
"MYSQL_ADDRESS": "地址",
"MYSQL_PASSWORD": "密码",
"MYSQL_USERNAME": "用户名"
},
"customLogs": "stdout",
"initialDelaySeconds": 2,
"dataBaseName": "nodejs_demo",
"executeSQLs": [
"CREATE DATABASE IF NOT EXISTS nodejs_demo;",
"USE nodejs_demo;"
]
}
小程序基础库版本最低要求为2.21.1
const {
socketTask
} = await wx.cloud.connectContainer({
config: {
env: '', // 替换自己的微信云托管的环境ID
},
service: '', // 替换自己的服务名
path:'/'
})
socketTask.onMessage(function (res) {
console.log('【WEBSOCKET】', res.data)
})
socketTask.onOpen(function (res) {
console.log('【WEBSOCKET】', '链接成功!')
setTimeout(() => {
socketTask.send({
data: '这是小程序消息'
})
}, 5000);
})
socketTask.onClose(function (res) {
console.log('【WEBSOCKET】链接关闭!')
})
以上便是微信云托管新能力「WebSocket」,基于此新能力可以延伸很多有趣的应用,例如线上聊天室、协同文档、消息推送等等,加上云托管的一些其他特性,值得体验!
作者:Life,云开发、云托管高级布道师。前端开发工程师,熟悉React、Node.js,在小程序、云开发方面有深入研究,通过云开发、云托管开发多套商用小程序,《小程序·云开发实战智慧衣橱小程序》直播课讲师。
-End-
微信云托管功能更新周报:支持第三方服务商模式、公众号开发者登录等
有奖
征文
微信云托管知识分享季·进行中
体验云托管,输出你的最佳实践
丰富周边和激励等你拿
本文分享自 腾讯云开发CloudBase 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!