教學課程:準備適用於 Azure 通訊服務的 Web 應用程式 (Node.js)

您可以使用 Azure 通訊服務,將即時通訊新增至您的應用程式。 在本教學課程中,您將了解如何設定支援 Azure 通訊服務的 Web 應用程式。 這個介紹教學課程的適用對象是想要開始使用即時通訊的新開發人員。

在本教學課程結束時,您會有一個使用 Azure 通訊服務 SDK 設定的基準 Web 應用程式。 然後,您可以使用該應用程式開始建置即時通訊解決方案。

您可以盡情瀏覽 Azure 通訊服務 GitHub 頁面,提供意見反應。

在本教學課程中,您會了解如何:

  • 設定您的開發環境。
  • 設定本機網頁伺服器。
  • 將 Azure 通訊服務套件新增至您的網站。
  • 將您的網站發佈至 Azure 靜態網站。

Prerequisites

設定您的開發環境

您的本機開發環境會如下所示進行設定:

說明開發環境架構的圖表。

安裝 Node.js、nvm 和 npm

我們將使用 Node.js 來下載並安裝用戶端應用程式所需的各種相依性。 我們會用它來產生靜態檔案,然後在 Azure 中裝載,因此您不需要擔心在伺服器上設定它。

Windows 開發人員可以遵循這個 Node.js 教學課程來設定 Node、nvm 和 npm。

本教學課程是以 LTS 12.20.0 版為基礎。 安裝 nvm 之後,請使用下列 PowerShell 命令來部署您要使用的版本:

nvm list available
nvm install 12.20.0
nvm use 12.20.0

顯示部署節點版本的命令螢幕擷取畫面。

設定 Visual Studio Code

您可以在其中一個支援的平台上下載 Visual Studio Code

為您的 Azure 通訊服務專案建立工作區

建立資料夾來儲存專案檔案,例如:C:\Users\Documents\ACS\CallingApp。 在 Visual Studio Code 中,選取 [ 檔案>] [將資料夾新增至工作區 ],然後將資料夾新增至您的工作區。

顯示將檔案新增至工作區之選取項目的螢幕擷取畫面。

轉到左側窗格中的 EXPLORER,您將在 CallingApp 工作區中看到您的文件夾。

顯示總管和未命名工作區的螢幕擷取畫面。

您可以隨意更新工作區的名稱。 您可以在 CallingApp 資料夾上按一下滑鼠右鍵,然後選取 [在整合式終端機中開啟],以驗證您的 Node.js 版本。

顯示在整合式終端機中開啟資料夾之選取項目的螢幕擷取畫面。

在終端機中,輸入下列命令來驗證在上一個步驟中安裝的 Node.js 版本:

node --version

顯示驗證節點版本的螢幕擷取畫面。

安裝適用於 Visual Studio Code 的 Azure 延伸模組

透過 Visual Studio Marketplace 或透過 Visual Studio Code ([檢視][延伸模組]>[Azure 儲存體]>),安裝 Azure 儲存體延伸模組

顯示安裝 Azure 儲存體延伸模組按鈕的螢幕擷取畫面。

請遵循 Azure FunctionsAzure App Service 延伸模組的相同步驟。

設定本機網頁伺服器

建立 npm 套件

在終端機中,從工作區資料夾的路徑輸入:

npm init -y

此命令會初始化新的 npm 套件,並將 package.json 新增至專案的根資料夾。

顯示套件 JSON 的螢幕擷取畫面。

如需 npm init 的其他相關文件,請參閱該命令的 npm 文件頁面

安裝 webpack

您可以使用 webpack 將程式碼組合成可部署至 Azure 的靜態檔案。 它也有開發伺服器,您可以設定該伺服器來使用通話範例。

在您的終端機中,輸入下列命令以安裝 webpack:

npm install webpack@4.42.0 webpack-cli@3.3.11 webpack-dev-server@3.10.3 --save-dev

本教學課程已使用上述命令中指定的版本進行測試。 指定 -dev 會告知套件管理員此相依性是以開發為目的,不應包含在您部署至 Azure 的程式碼中。

您會看到兩個新套件以 package.json 新增至 devDependencies 檔案。 套件將安裝在 ./CallingApp/node_modules/ 目錄中。

顯示 Webpack 組態的螢幕擷取畫面。

設定開發伺服器

從瀏覽器執行的靜態應用程式 (例如您的 index.html 檔案) 會使用 file:// 通訊協定。 若要讓 npm 模組正常運作,您必須使用 webpack 作為本機開發伺服器以使用 HTTP 通訊協定。

您將建立兩個設定:一個用於開發,另一個用於生產環境。 針對生產環境準備的檔案將會縮小,這表示您將移除未使用的空白和字元。 此設定適用於應最小化延遲的生產案例,或應模糊化程式碼的生產案例。

您將使用 webpack-merge 工具來處理 webpack 的不同設定檔

開始使用開發環境。 首先,您必須安裝 webpack merge。 在您的終端機中,執行下列命令:

npm install --save-dev webpack-merge

在您的 package.json 檔案中,您可以看到多新增了一個相依性到 devDependencies

接下來,建立名為 webpack.common.js 的檔案,然後新增下列程式碼:

const path = require('path');
module.exports ={
    entry: './app.js',
    output: {
        filename:'app.js',
        path: path.resolve(__dirname, 'dist'),
    }
}

接著,再新增兩個檔案,每個設定各一個:

  • webpack.dev.js
  • webpack.prod.js

現在,在 webpack.dev.js 檔案中新增下列程式碼以進行修改:

const { merge } = require('webpack-merge');
const common = require('./webpack.common.js');

module.exports = merge(common, {
    mode: 'development',
    devtool: 'inline-source-map',
});

在此設定中,您會從 webpack.common.js 匯入一般參數、合併兩個檔案、將模式設定為 development,並將來源對應設定為 inline-source-map

開發模式會告知 Webpack 不要縮減檔案,所以不會產生最佳化生產檔案。 您可以在 webpack 模式網頁上尋找有關 webpack 模式的詳細文件。

來源對應選項列示在 webpack Devtool 網頁。 設定來源對應可讓您更容易透過瀏覽器進行偵錯。

顯示設定 Webpack 之程式碼的螢幕擷取畫面。

若要執行開發伺服器,請移至 package.json,並在 scripts 下方新增下列程式碼:

    "build:dev": "webpack-dev-server --config webpack.dev.js"

您的檔案現在看起來應該像這樣:

{
  "name": "CallingApp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build:dev": "webpack-dev-server --config webpack.dev.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^4.42.0",
    "webpack-cli": "^3.3.11",
    "webpack-dev-server": "^3.10.3"
  }
}

您已新增可從 npm 使用的命令。

顯示修改 package.json 的螢幕擷取畫面。

測試開發伺服器

在 Visual Studio Code 中,在您的專案下方建立三個檔案:

  • index.html
  • app.js
  • app.css (選用,用於設定應用程式的樣式)

將此程式碼貼到 index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My first Azure Communication Services application</title>
    <link rel="stylesheet" href="./app.css"/>
    <script src="./app.js" defer></script>
</head>
<body>
    <h1>Hello from Azure Communication Services!</h1>
</body>
</html>

顯示 HTML 檔案的螢幕擷取畫面。

將下列程式碼新增至 app.js

alert('Hello world alert!');
console.log('Hello world console!');

將下列程式碼新增至 app.css

html {
    font-family: sans-serif;
  }

別忘了儲存! 未儲存的檔案會在檔案總管中的檔名旁顯示白點來表示。

顯示具有 JavaScript 程式碼之 App.js 檔案的螢幕擷取畫面。

當您開啟此頁面時,應該會在瀏覽器主控台中看到顯示訊息與警示。

顯示 App.css 檔案的螢幕擷取畫面。

使用下列終端機命令來測試您的開發設定:

npm run build:dev

主控台會顯示伺服器執行的所在位置。 預設為http://localhost:8080build:dev 命令是您稍早新增至 package.json 的命令。

顯示啟動程式開發伺服器的螢幕擷取畫面。

移至瀏覽器中的位址,您應該會看到在先前步驟中設定的頁面和警示。

HTML 頁面的螢幕擷取畫面。

當伺服器執行時,您可以變更程式碼和伺服器。 HTML 頁面會自動重新載入。

接下來,移至 Visual Studio Code 中的 app.js 檔案,並刪除 alert('Hello world alert!');。 儲存您的檔案,並確認警示從瀏覽器消失。

若要停止伺服器,您可以在終端機中執行 Ctrl+C。 若要啟動伺服器,請隨時輸入 npm run build:dev

新增 Azure 通訊服務套件

使用 npm install 命令,安裝適用於 JavaScript 的 Azure 通訊服務通話 SDK。

npm install @azure/communication-common --save
npm install @azure/communication-calling --save

此動作會將 Azure 通訊服務的一般和通話套件新增為您套件的相依性。 您會看到兩個新套件新增至 package.json 檔案。 如需進一步了解 npm install,請參閱該命令的 npm 文件頁面

顯示安裝 Azure 通訊服務套件之程式碼的螢幕擷取畫面。

這些套件是由 Azure 通訊服務小組提供,其中包含驗證和通話程式庫。 --save 命令會發出訊號,指出應用程式基於生產目的而相依於這些套件,且會納入 devDependencies 檔案中的 package.json。 當您建置用於生產的應用程式時,套件會納入生產程式碼中。

將您的網站發佈至 Azure 靜態網站

建立生產部署的設定

將下列程式碼新增至 webpack.prod.js

const { merge } = require('webpack-merge');
const common = require('./webpack.common.js');

module.exports = merge(common, {
  mode: 'production',
});

此設定將會與 webpack.common.js 合併 (您在其中指定輸入檔並用來儲存結果)。 設定也會將模式設定為 production

package.json 中新增下列程式碼:

"build:prod": "webpack --config webpack.prod.js"

您的檔案看起來應該像這樣:

{
  "name": "CallingApp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build:dev": "webpack-dev-server --config webpack.dev.js",
    "build:prod": "webpack --config webpack.prod.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@azure/communication-calling": "^1.0.0-beta.6",
    "@azure/communication-common": "^1.0.0"
  },
  "devDependencies": {
    "webpack": "^4.42.0",
    "webpack-cli": "^3.3.11",
    "webpack-dev-server": "^3.10.3",
    "webpack-merge": "^5.7.3"
  }
}

顯示已設定檔案的螢幕擷取畫面。

在終端機中,執行:

npm run build:prod

命令會在其中建立 dist 資料夾和生產就緒 app.js 靜態檔案。

顯示生產組建的螢幕擷取畫面。

將應用程式部署至 Azure 儲存體

index.htmlapp.css 複製到 dist 資料夾。

dist 資料夾中,建立檔案並將其命名為 404.html。 將下列標記複製到該檔案:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="./app.css"/>
    <title>Document</title>
</head>
<body>
    <h1>The page does not exists.</h1>
</body>
</html>

儲存檔案 (Ctrl+S)。

以滑鼠右鍵按一下 dist 資料夾,然後選取 [透過 Azure 儲存體部署至靜態網站]

開始部署至 Azure 之選取項目的螢幕擷取畫面。

在 [ 選取訂用帳戶] 底下,選取 [登入 Azure] (如果您之前未建立訂用帳戶,請 選取 [建立免費 Azure 帳戶 ]。

顯示登入 Azure 之選取項目的螢幕擷取畫面。

選取 [建立新的儲存體帳戶]>[進階]

顯示建立儲存體帳戶群組之選取項目的螢幕擷取畫面。

提供儲存體群組的名稱。

顯示新增帳戶名稱的螢幕擷取畫面。

必要時,建立新的資源群組。

顯示用於建立新資源群組之選取項目的螢幕擷取畫面。

針對 [您要啟用靜態網站裝載嗎?],選取 [是]

顯示選取啟用靜態網站裝載選項的螢幕擷取畫面。

針對 [輸入索引文件名稱],接受預設檔案名稱。 您已建立檔案 index.html

針對 [輸入 404 錯誤文件路徑],輸入 404.html

選取應用程式的位置。 您選取的位置會定義未來在群組通話中通話應用程式使用的媒體處理器。

Azure 通訊服務會根據應用程式位置選取媒體處理器。

顯示位置清單的螢幕擷取畫面。

請等候資源與網站建立完成。

選取 [瀏覽至網站]

顯示部署已完成之訊息的螢幕擷取畫面,其中包含瀏覽至網站的按鈕。

從瀏覽器的開發工具,您可以檢查來源,並查看準備用於生產的檔案。

具有檔案之網站來源的螢幕擷取畫面。

移至 Azure 入口網站,選取您的資源群組,然後選取您建立的應用程式。 然後選擇 設定>靜態網站。 您可以看到靜態網站已啟用。 請注意主要端點、索引文件名稱和錯誤文件路徑。

顯示靜態網站選取項目的螢幕擷取畫面。

在 [Blob 服務] 之下,選取 [容器]。 此清單顯示建立的兩個容器,一個用於記錄 ($logs),另一個用於您的網站內容 ($web)。

顯示容器設定的螢幕擷取畫面。

如果開啟 $web 容器,您會看到您在 Visual Studio 中建立並部署至 Azure 的檔案。

顯示部署至 Azure 之檔案的螢幕擷取畫面。

您可以隨時從 Visual Studio Code 重新部署應用程式。

您現在已準備好建置您的第一個 Azure 通訊服務 Web 應用程式。

後續步驟

您可能也想要: