【 Cloud 】使用 Node.js 透過 Azure Functions 與 Azure Web PubSub Service 建立即時通訊 Web

【 Cloud 】使用 Node.js 透過 Azure Functions 與  Azure Web PubSub Service 建立即時通訊 Web
Photo by Rowan Simpson / Unsplash

內容

  • 學習目標
  • 前置準備作業
  • 建立 Azure Web PubSub Service
  • 建立 Azure Functions
  • 撰寫 Node.js 版傳送與接收程式
  • 撰寫 Web 程式
  • 執行 Web 程式
  • Node.js 傳送與 Web 接收測試

學習目標

  • 如何使用 Node.js 透過 Azure Functions 與 Azure Web PubSub Service 建立即時通訊 Web。

前置準備作業

  • 已建立 Azure 帳號並能正常登入
  • 本地端電腦已安裝瀏覽器
  • 已於電腦端安裝 Node.js
  • 已於電腦端安裝 IDE,本範例使用 Visual Studio Code

建立 Azure Web PubSub Service

Step 1. 在上方搜尋框輸入 pubsub 關鍵字並點選 Web PubSub Service 的搜尋結果

---2021-11-24---8.38.12

Step 2. 點選 + Create

---2021-11-24---8.39.54

Step 3. 輸入相關資訊

  • Subscription 欄位選擇所要使用的訂閱。
  • Resource group 欄位輸入此 Web PubSub 所要歸屬於的群組。
  • Resource Name 欄位輸入一個可識別的名稱。
  • Region 欄位請選擇 Web PubSub 服務所要位於的資料中心。
  • Pricing tier 欄位請選擇此 Web PubSub 服務所要使用的等級,請選擇 Standard
  • 當輸入完成後點選 Review + create

---2021-11-24---8.41.23

Step 4. 建立服務

  • 確認資訊正確則點選 Create

---2021-11-24---8.42.52

Step 5. 點選 Go to resource

---2021-11-24---8.45.20

Step 6. 取得 Connection String

  • 點選左側的 Keys > 再點選 Primary 中的 Connection string 右邊的複製按鈕

---2021-11-24---8.46.42

建立 Azure Functions

Step 1. 在上方搜尋框輸入 function 關鍵字並點選 Function App 的搜尋結果

---2021-11-23---1.29.58

Step 2. 點選 + Create

---2021-11-23---1.31.58

Step 3. 輸入相關資訊

  • Subscription 欄位選擇所要使用的訂閱。
  • Resource group 欄位輸入此 Function 所要歸屬於的群組。
  • Function App name 欄位輸入一個可識別的名稱。
  • Publish 欄位請選擇 Code
  • Runtime stack 欄位請選擇 Node.js
  • Version 欄位請選擇 14 LTS
  • Region 欄位請選擇 SignalR 服務所要位於的資料中心。
  • 當輸入完成後點選 Review + create

---2021-11-23---1.33.09

Step 4. 建立服務

  • 確認資訊正確則點選 Create

---2021-11-24---8.56.41

Step 5. 點選 Go to resource

---2021-11-24---9.02.25

Step 6. 建立 negotiate

  • 點選左側的 Functions > 再點選上方的 + Create

---2021-11-24---9.05.20

  • 選擇 HTTP trigger

---2021-11-24---9.07.12

  • Template details 輸入相關資訊
    • New Function 欄位請輸入 negotiate
    • 當輸入完成後點選 Create

---2021-11-24---9.09.50

  • 設定 negotiate
    • 點選左側的 Code + Test

---2021-11-24---9.12.04

  • 點選上方的選單選擇 index.js 再輸入下方程式後再點選上方的 Save 按鈕

---2021-11-24---9.13.18

  • 點選上方的選單選擇 function.json 再輸入下方的設定後再點選上方的 Save 按鈕

---2021-11-24---9.14.51

Step 7. 設定 Config

  • 點選左側的 Configuration

---2021-11-24---9.17.29

  • 點選 + New application setting

---2021-11-24---9.19.01

  • 設定 Azure Web PubSub 連接字串
    • Name 欄位請輸入 PubSubConnectionString
    • Value 欄位請輸入建立 Azure Web PubSub 時所取得 Connection String
    • 當輸入完成後點選 OK

---2021-11-24---9.21.08

---2021-11-24---9.22.58

  • 再點選 + New application setting

---2021-11-24---9.19.01

  • 設定 Azure Web PubSub 的服務名稱
    • Name 欄位請輸入 PubSubHubName
    • Value 欄位請輸入建立 Azure Web PubSub 時所建立的名稱
    • 當輸入完成後點選 OK

---2021-11-24---9.21.08

---2021-11-24---9.26.34

  • 點選 Save

---2021-11-24---9.27.46

  • 點選 Continue

---2021-11-24---9.28.46

Step 8. 安裝套件

  • 點選左側的 Advanced Tools > 再點選 Go →

---2021-11-24---9.31.22

  • 點選上方的 Debug console > CMD

---2021-11-24---9.34.11

  • 切換路徑到 negotiate 資料夾
    • 請輸入 cd site\wwwroot\negotiate

---2021-11-24---9.36.57

  • 初始化專案
    • 請輸入 npm init -y

---2021-11-24---9.40.08

  • 安裝 @azure/web-pubsub 套件 ( 需花一段時間進行安裝 )
    • 請輸入 npm install @azure/web-pubsub

---2021-11-24---9.44.06

  • 安裝 dotenv 套件 ( 需花一段時間進行安裝 )
    • 請輸入 npm install dotenv

---2021-11-24---9.45.57

撰寫 Node.js 版傳送與接收程式

Step 1. 在本地端電腦建立 sub.js 且再輸入下方程式

  • 修改第 4 行中的 請輸入 Azure Web PubSub Service 的 Connection String
  • 修改第 5 行中的 請輸入 Azure Web PubSub Service 的名字

Step 2. 在本地端電腦建立 pub.js 且再輸入下方程式

  • 修改第 3 行中的 請輸入 Azure Web PubSub Service 的 Connection String
  • 修改第 4 行中的 請輸入 Azure Web PubSub Service 的名字

Step 3. 初始化專案

  • 開啟終端機輸入下方指令
    npm init -y
    

Step 4. 安裝 ws 套件

  • 在終端機輸入下方指令
    npm i ws
    

Step 5. 執行 sub.js 程式

  • 在終端機輸入下方指令
    node sub.js
    

---2021-11-24---9.54.42

Step 6. 執行 pub.js 程式

  • 另開一個終端機輸入下方指令
    node pub.js
    

---2021-11-24---9.55.17

  • 在執行 sub.js 程式的終端機會收到 pub.js 程式所傳送過來的訊息

---2021-11-24---9.56.34

撰寫 Web 程式

Step 1. 在本地端電腦建立 index.html 且再輸入下方程式

  • 修改程式中的 請輸入 Azure Function URL 為取得到的 URL

---2021-11-24---10.01.16

執行 Web 程式

Step 1. 請安裝 Live ServerVisual Studio Code

Step 2. 啟動 index.html

  • 點選 index.html 右鍵 > Open with Live Server

---2021-11-24---10.02.58

  • 啟動後畫面

---2021-11-24---10.04.17

Step 3. 設定 CORS 於剛才所建立的 Azure Function

  • 下載 Ngrok

  • 於終端機輸入下方指令

    ./ngrok http 5500
    
  • 複製 https 的網址

---2021-11-24---10.05.28

  • 啟用 CORS
    • ① 點選所建立的 Azure Function 左側的 CORS
    • ② 勾選 Enable Access-Control-Allow-Credentials
    • ③ 在 Allowed Origins 欄位輸入上步驟所複製 https 的網址
    • ④ 當輸入完成後點選上方的 Save 按鈕

---2021-11-24---10.06.50

  • 新開瀏覽器頁籤並輸入上上步驟所複製 https 的網址並開啟主控台
    • 需等待一段時間在主控台會收到一些資訊

---2021-11-24---10.10.24

Node.js 傳送與 Web 接收測試

Step 1. 再執行剛才的 pub.js 程式

  • 於終端機輸入下方指令
    node pub.js
    

---2021-11-24---9.55.17

Step 2. 在剛才的網頁會收到 pub.js 程式所傳送來的資訊

---2021-11-24---10.11.45

Reference

GitHub

List of blogs