tencent cloud

云函数

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
相关概念
工作原理
产品优势
应用场景
相关产品
购买指南
计费概述
计费方式
计费项与计费方式
函数算力支持
免费额度
产品定价
计费示例
欠费与停服说明
快速入门
使用控制台创建一个事件函数
操作指南
配额管理
函数管理
Web 函数管理
日志管理
并发管理
触发器管理
函数 URL
自定义域名
版本管理
别名管理
权限管理
运行实例管理
插件管理
监控与告警管理
网络配置
层管理
执行配置
扩展存储管理
DNS 缓存配置
资源托管模式管理
近离线资源托管模式
工作流
触发器
触发器概述
触发器事件消息结构汇总
API 网关触发器
COS 触发器
CLS 触发器
定时触发器
CKafka 触发器
Apache Kafka 触发器
MQTT 触发器
触发器配置描述
MPS 触发器
CLB 触发器说明
云 API 触发器
开发指南
基本概念
测试云函数
环境变量
依赖安装
使用容器镜像
使用 Docker 安装依赖
错误类型与重试策略
死信队列
云函数接入数据库
自动化部署
云函数状态码
常见错误码解决方法
开发者工具
Serverless Web IDE
函数间调用 SDK
第三方工具
代码开发
Python
Node.js
Golang
PHP
Java
Custom Runtime
使用镜像部署函数
Web 框架部署
通过命令行完成框架部署
快速部署 Egg 框架
快速部署 Express 框架
快速部署 Flask 框架
快速部署 Koa 框架
快速部署 Laravel 框架
快速部署 Nestjs 框架
快速部署 Nextjs 框架
快速部署 Nuxtjs 框架
快速部署 Django 框架
实践教程
最佳实践概述
云产品联合解决方案
业务开发相关实践
实时音视频 TRTC
对象存储 COS
消息队列 CKafka
日志服务CLS
负载均衡 CLB
视频处理 MPS
内容分发网络 CDN
云数据仓库 PostgreSQL
云点播 VOD
短信 SMS
Elasticsearch Service
定时任务
视频处理
客户案例
腾讯在线教育
在线教育行业案例
游戏聊天系统
腾讯互娱国际(IEGG)
API 文档
History
Introduction
API Category
Making API Requests
Other APIs
Namespace APIs
Layer Management APIs
Async Event Management APIs
Trigger APIs
Function APIs
函数和层的状态说明
Data Types
Error Codes
SDK文档
常见问题
通用问题
Web 函数相关问题
计费相关问题
网络相关问题
日志相关问题
SCF 工具相关问题
事件处理相关问题
API 网关触发器相关问题
相关协议
Service Level Agreement
联系我们
词汇表

WebSocket 协议支持

PDF
聚焦模式
字号
最后更新时间: 2024-03-21 18:35:10
Web 函数目前已经支持通过原生 WebSocket 协议在客户端和函数运行的服务端间建立连接。

工作原理

服务启动

可以通过在配置支持 WebSocket 协议的 Web 函数的运行环境中,使用启动文件启动 WebSocket 服务器,并在 指定端口(9000) 上进行监听,等待客户端连接。
同时,API 网关触发器需要设定为前端协议为 “WS 或 WSS” 支持,后端为当前指定支持 WebSocket 的 Web 函数。 通过 API 网关提供的 ws 路径,可供客户端连接使用。

建立 WebSocket 连接

WebSocket 客户端通过使用 API 网关触发器提供的 WS 连接,发起 WebSocket 连接。 API 网关及云函数平台将透传连接至运行环境中的服务进程上。建立连接的协商及通讯过程,均由服务端代码处理。
连接建立后,客户端及服务端按 WebSocket 协议进行正常通讯。

WebSocket 连接生命周期

在 Web 函数的 WebSocket 支持下, WebSocket 一次连接的生命周期,等同于一次函数调用请求。WS 连接建立过程等同于请求发起阶段,WS 连接断开等同于请求结束。
同时,函数实例与连接一一对应,即同一实例在某一时刻仅处理一个 WS 连接。在有更多客户端的连接请求发起时,将启动对应数量的实例进行处理。
当 WS 连接请求时,函数实例启动,并接受连接建立的请求。
当 WS 连接建立后,实例持续运行,根据实际业务情况来接受处理客户端的上行数据,或服务端主动推送下行数据。
当 WS 连接中断后,实例停止运行。

连接断开

在如下情况中,WS 连接会中断,且由于请求生命周期与连接生命周期相同,也会使得当次请求运行周期结束:
断开情况
函数表现
函数状态码
客户端或服务端发起连接结束、关闭连接操作,结束状态码为1000、1010(客户端发送)、1011(服务端发送)
函数正常执行结束,运行状态为成功
200
客户端或服务端发起连接结束、关闭连接操作,结束状态码非1000、1010、1011
函数异常结束,运行状态为失败
439(服务端关闭)、456(客户端关闭)
在 WS 连接上无消息上行或下行发送,达到配置的空闲超时时间的情况下,连接被函数平台断开
函数异常结束,运行状态为失败
455
在连接建立后持续使用,函数运行时间达到最大运行时长,连接被函数平台断开
函数异常结束,运行状态失败
433
WebSocket 协议的结束码详情可参见 WebSocket Status Codes
更详细的函数状态码可参见 云函数状态码列表

使用限制

使用 WebSocket 时有如下限制:
空闲超时时间设置:10~7200 秒,函数配置的执行超时时间需要大于等于空闲超时时间。
单次请求或返回包最大体积:256KB,可 提交工单 提升配额限制。
单连接请求大小限制:128KB/s,可 提交工单 提升配额限制。
单连接请求 QPS 限制:10,可 提交工单 提升配额限制。

操作步骤

创建函数

2. 单击新建创建云函数,可以通过选择自定义创建 > 选择 Web 函数 > 高级配置来看到协议支持选项。如下图所示:


3. 通过勾选 WebSocket 支持,配置好 WebSocket 空闲超时时间,来完成 WebSocket协议支持。如下图所示:


4. 同时在勾选 WebSocket 支持后,API 网关的协议支持同样将自动切换为 WS&WSS 支持,创建的 API 网关所提供的链接地址,也将是 Websocket 地址。如下图所示:


说明:
在完成创建后,WebSocket 的协议支持不可取消,但可以根据需求修改空闲超时时间配置。

示例代码

目前可以通过如下的 Demo 代码来创建函数,体验 WebSocket 效果:
Python 示例:使用 websockets 库 实现 WebSocket 服务端。
Nodejs 示例:使用 ws 库 实现 WebSocket 服务端。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈