上云无忧 > 文档中心 > 腾讯云云Web函数使用教程 - WebSocket 协议支持
云函数 SCF
腾讯云云Web函数使用教程 - WebSocket 协议支持

文档简介:
Web 函数目前已经支持通过原生 WebSocket 协议在客户端和函数运行的服务端间建立连接。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠
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,可 联系我们 提升配额限制。

操作步骤

创建函数

1. 登录 Serverless 控制台,单击左侧导航栏的函数服务
2. 在主界面上方选择期望创建函数的地域和命名空间,并单击新建,进入函数创建流程。
3. 选择使用从头开始来新建函数,函数类型选择 Web 函数
4. 高级配置中查看协议支持选项。通过勾选 WebSocket 支持,配置好 WebSocket 空闲超时时间,来完成 WebSocket协议支持。如下图所示:

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

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

示例代码

目前可以通过如下的 Demo 代码来创建函数,体验 WebSocket 效果:
Python 示例:使用 websockets 库 实现 WebSocket 服务端。
Nodejs 示例:使用 ws 库 实现 WebSocket 服务端。
相似文档
  • SSE(Server-sent Events)是 WebSocket 的一种轻量代替方案,是一种服务器端到客户端(浏览器)的单向流式消息推送协议,在 AI 生成对话等场景下较为常见。Web 函数目前已经支持通过 SSE 协议在客户端和函数运行的服务端间建立连接。
  • 请求单并发: 默认情况下,在调用函数时,云函数会分配一个并发实例处理请求或事件。函数代码运行完毕返回后,该实例会处理其他请求。如果在请求到来时,所有实例都在运行中,云函数则会分配一个新的并发实例。一个并发实例同一时刻仅处理一个事件的运行逻辑,保障每个事件的处理效率和稳定性。
  • 操作场景: 云函数 SCF 于2021年01月29日起进行日志服务升级,接入腾讯云日志服务 CLS,在此日期前创建的函数正在按地域逐渐进行迁移,详情可参见 云函数日志服务变更说明。
  • 云函数 SCF 日志按条写入日志服务 CLS,每次请求的日志由多条组成,每条日志均为固定的 键:值 格式。
  • 说明: 若您的函数于2021年1月29日前创建且尚未进行迁移,如需使用更多日志分析功能,则请参见 日志投递配置(旧),将函数调用日志投递到日志服务 CLS 使用。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部