WebSocket八問八答,websocket從入門到精通半小時就夠WebSocket八問八答云函數Web Function支持原生WebSocket協議后,受到了眾多開發者的關注,與此同時,我們也收到了許多疑問和反饋。本篇文章將大家關注的點總結了八大問題并進行了一一解答,希望可以幫助您更好理解和使用云函數的WebSo......
云函數Web Function支持原生WebSocket協議后,受到了眾多開發者的關注,與此同時,我們也收到了許多疑問和反饋。本篇文章將大家關注的點總結了八大問題并進行了一一解答,希望可以幫助您更好理解和使用云函數的WebSocket功能。
01.
事件函數、Web函數、WebSocket之間的關系
目前函數支持了不同類型的函數,寫法和支持功能上都有一定區別,幾種函數類型關系如圖:
由于接收的觸發源類型不同,云函數支持了Web函數與事件函數為兩大類型,Web函數下又支持不同的Web協議,可以根據實際業務選擇對應的函數類型。
02.
云函數上使用WebSocket,代碼究竟應該怎么寫
對于傳統開發者而言,遇到的最大問題是不知道如何在云端寫函數,Web函數提供了最原生的開發方式,以WebSocket服務器代碼開發為例,除了需要指定監聽端口外,本地業務代碼和云端業務代碼并無其它區別,直接部署上傳即可,示例如下:
scfbootstrap示例:
#!/bin/bash
/var/lang/node12/bin/node app.js
03.
已部署為httphttps協議的Web函數,能否升級為WebSocket協議
目前還不支持函數協議的直接轉換,建議采用創建新函數的方式體驗WebSocket的功能。
04.
在WebSocket場景下,函數的超時時間是如何定義的
WebSocket的場景下,超時時間分為三部分,介紹如下:
·初始化超時時間:函數初始化階段包括準備函數代碼、準備鏡像、準備層等相關資源以及執行函數主流程代碼,可選值范圍為3300秒,鏡像部署函數默認90秒,其他函數默認60秒。
·執行超時時間:函數的最長運行時間,對WS協議而言,此處指從發起連接請求到連接斷開,完成一次調用的時間,如果您的業務場景對WS有長時間保持連接的要求,建議調大該時間。
·WS空閑超時時間:指WS的空閑等待時間,可選范圍1600秒。
05.
對于WebSocket函數,應該如何查看運行日志常見狀態碼與錯誤原因
日志查看的方式與事件函數相同,您可以通過console.log()、print()等通用方式完成日志打印,并在控制臺查看到運行日志。
狀態碼說明:更詳細的函數狀態碼可見云函數狀態碼列表。
云函數狀態碼表:https://cloud.tencent.com/document/product/583/42611
06.
WebSocket的常見使用場景如聊天室,需要實現連接信息的注冊存儲,在云函數架構下該如何實現
云函數為單實例單并發,對于聊天室場景,不同用戶的請求訪問后臺服務時,云函數會根據實際請求數量進行擴縮容調整后臺實例數,不同實例之間,需要新增消息隊列/Redis作為中間件層,實現多Server之間的通訊,從而實現消息的精準廣播:
1.建立連接模塊,函數通過WS請求進行連接信息的篩選,并記錄到消息隊列/Redis中完成注冊:
2.消息傳輸模塊,云函數將發快遞請求的請求ID,發快遞給中間件,根據ID決定消息的廣播或指定用戶發快遞,網關側透傳請求,不做特殊業務邏輯處理;
3.消息清理模塊,用戶斷開連接,函數同步清理中間件層的注冊消息
07.
Http協議和WS能否混用期望用戶通過Http訪問,但使用WS來轉發
對于Web函數,這種場景是可以實現的,但架構上無法通過單一函數管理,而是需要使用兩個函數,并在中間通過一個消息隊列/Redis作為中間件來連接,參考架構如圖:
08.
WebSocket往往需要一直保持心跳,這里如何計費
WebSocket的計費項與事件函數相同,各個計費項說明如下:
·Web函數調用次數:按照每次WS建立連接收費,連接后續的心跳次數不做計費;(Web函數調用費用即將進行優化,敬請期待)
·函數資源量GBs:按照連接從WS建立到斷開的總時間統計函數運行時長,設置合理的超時時間可以有效節省費用;
·外網出流量:函數對外訪問的流量費用,與現有函數統計方式相同。
特別聲明:以上文章內容僅代表作者本人觀點,不代表ESG跨境電商觀點或立場。如有關于作品內容、版權或其它問題請于作品發表后的30日內與ESG跨境電商聯系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號密碼登錄
平臺顧問
微信掃一掃
馬上聯系在線顧問
小程序
ESG跨境小程序
手機入駐更便捷
返回頂部