云函数 WebSocket 协议支持

Web 函数目前已经支持通过原生 WebSocket 协议在客户端和函数运行的服务端间建立连接。

相关产品
云函数 产品页,含版本规格、价格与购买入口。

一、服务启动

在支持 WebSocket 协议的 Web 函数运行环境中,通过启动文件启动 WebSocket 服务器,并在指定端口(9000)上进行监听。客户端可通过函数 URL 提供的 ws/wss 路径进行连接。

二、建立 WebSocket 连接

客户端通过函数 URL 提供的 ws/wss 地址发起连接,云函数平台将透传连接至运行环境中的服务进程上。连接协商及通信过程由服务端代码处理。连接建立后,客户端及服务端按 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. 在函数 URL 配置中,按需勾选公网或者内网访问。

6. 勾选同意《腾讯云云函数网络服务协议》,单击完成。

7. 函数创建后,可以在函数 URL 页查看到对应的 ws/wss 地址。如下:

注意:说明:

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

注意:若你从 API 网关迁移至函数 URL,需要保持原请求参数格式,请开启参数兼容模式(函数将自动处理请求参数,部分 API 网关特有字段留空,暂不支持 Base64 特性)。

七、示例代码

目前可以通过如下的 Demo 代码来创建函数,体验 WebSocket 效果:

·Python 示例:使用 websockets 库 实现 WebSocket 服务端。

·Node.js 示例:使用 ws 库 实现 WebSocket 服务端。

赞 (0)
上一篇 4天前
下一篇 4天前