云函數(shù)Web Function能力推出后,對(duì)于原生框架的無(wú)改造直接部署,在性能和開發(fā)流程上,都受到了眾多開發(fā)者的好評(píng)。在一期能力的基礎(chǔ)上,Web Function現(xiàn)已支持WebSocket協(xié)議,實(shí)現(xiàn)客戶端和函數(shù)運(yùn)行的服務(wù)端間建立長(zhǎng)連接。
01.
工作原理
1.服務(wù)啟動(dòng)與連接建立
與HTTP協(xié)議一樣,Web函數(shù)支持在官方或自定義的運(yùn)行環(huán)境中,使用啟動(dòng)文件啟動(dòng)WebSocket服務(wù)器,并在指定端口(9000)上進(jìn)行監(jiān)聽,通過前端API網(wǎng)關(guān)提供的WS路徑,接收到客戶端連接請(qǐng)求后,完成連接的建立。
連接建立后,客戶端及服務(wù)端按WebSocket協(xié)議進(jìn)行正常通訊。
2.WebSocket連接生命周期
在Web函數(shù)的WebSocket支持的情況下,WebSocket一次連接的生命周期,等同于一次函數(shù)調(diào)用請(qǐng)求;WS連接建立過程等同于請(qǐng)求發(fā)起階段,WS連接斷開等同于請(qǐng)求結(jié)束。
02.
控制臺(tái)部署體驗(yàn)
1.創(chuàng)建函數(shù)
在通過控制臺(tái)創(chuàng)建函數(shù)時(shí),可以通過選擇自定義創(chuàng)建、選擇Web函數(shù)、展開高級(jí)配置來(lái)看到協(xié)議支持選項(xiàng)。
通過勾選WebSocket支持,配置好WebSocket空閑超時(shí)時(shí)間,來(lái)完成WebSocket協(xié)議支持。
同時(shí)在勾選WebSocket支持后,API網(wǎng)關(guān)的協(xié)議支持同樣將自動(dòng)切換為WS&WSS支持,創(chuàng)建的API網(wǎng)關(guān)所提供的鏈接地址,也將是WebSocket地址。
在完成創(chuàng)建后,WebSocket的協(xié)議支持不可取消,但可以根據(jù)需求修改空閑超時(shí)時(shí)間配置。
03.
示例代碼
目前可以通過如下的Demo代碼來(lái)創(chuàng)建函數(shù),體驗(yàn)WebSocket效果:
·Python示例:使用WebSockets庫(kù)實(shí)現(xiàn)WebSocket服務(wù)端;
Python示例獲取地址:https://github.com/awesome-scf/scf-python-code-snippet/tree/main/ws_python
·Node.js示例:使用WebSockets庫(kù)實(shí)現(xiàn)WebSocket服務(wù)端;
Node.js示例獲取地址:https://github.com/awesome-scf/scf-nodejs-code-snippet/tree/main/ws_node
·WebSockets庫(kù):https://github.com/websockets/ws