開始使用 Node.js 中的轉送混合式 連線 Ions WebSocket

在本快速入門中,您會使用 Azure 轉送中的混合式 連線 WebSockets,建立Node.js傳送和接收訊息的傳送者和接收者應用程式。 若要瞭解 Azure 轉寄一般,請參閱 Azure 轉寄

在本快速入門中,您會採取下列步驟:

  1. 使用 Azure 入口網站 建立轉寄命名空間。
  2. 使用 Azure 入口網站,在該命名空間中建立混合式連線。
  3. 撰寫伺服器(接聽程式)控制台應用程式以接收訊息。
  4. 撰寫用戶端 (sender) 主控台應用程式以傳送訊息。
  5. 執行應用程式。

必要條件

建立命名空間

  1. 登入 Azure 入口網站

  2. 選取左側功能表上的 [所有服務]。 依序選取 [整合]、搜尋 [轉寄]、將滑鼠移至 [轉寄] 上方,然後選取 [建立]。

    顯示選取 [轉寄 -> 建立] 按鈕的螢幕快照。

  3. 在 [ 建立命名空間] 頁面上,遵循下列步驟:

    1. 選擇要在其中建立命名空間的 Azure 訂用帳戶。

    2. 針對 [ 資源群組],選擇要放置命名空間的現有資源群組,或建立新的資源群組。

    3. 輸入轉寄命名空間的名稱。

    4. 選取您的命名空間應該裝載所在的區域。

    5. 選取頁面底部的 [檢閱 + 建立] 。

      顯示 [建立命名空間] 頁面的螢幕快照。

    6. 在 [檢閱 + 建立] 頁面上,選取 [建立]

    7. 幾分鐘后,您會看到 命名空間的 [轉寄 ] 頁面。

      顯示轉接命名空間首頁的螢幕快照。

取得管理認證

  1. 在 [ 轉寄 ] 頁面上,選取 左側功能表上的 [共用存取原則 ]。 `

  2. 在 [共用存取原則] 頁面上,選取 [RootManageSharedAccessKey]

  3. [SAS 原則:RootManageSharedAccessKey] 下,選取 [主要 連線 ion String 旁的 [複製] 按鈕。 此動作會將 連接字串 複製到剪貼簿以供稍後使用。 將此值貼到記事本或一些其他暫存位置。

  4. 重複上述步驟,將 [主要密鑰] 的值複製並貼到暫存位置,以供日後使用。

    顯示轉接命名空間之連線資訊的螢幕快照。

建立混合式連線

在命名空間的 [ 轉送 ] 頁面上,遵循下列步驟來建立混合式連線。

  1. 在左側功能表上的 [實體] 底下,選取 [混合式 連線],然後選取 [+ 混合式 連線]。

    顯示混合式 連線 頁面的螢幕快照。

  2. 在 [建立混合式 連線 ion] 頁面上,輸入混合式連線的名稱,然後選取 [建立]。

    顯示 [建立混合式 連線] 頁面的螢幕快照。

建立伺服器應用程式 (接聽程式)

若要接聽和接收來自轉寄的訊息,請撰寫Node.js控制台應用程式。

建立 Node.js 應用程式

建立名為 listener.js的新 JavaScript 檔案。

新增轉寄套件

npm install hyco-ws從項目資料夾中的 Node 命令提示字元執行。

撰寫一些程式代碼以接收訊息

  1. 將下列常數新增至檔案頂 listener.js 端。

    const WebSocket = require('hyco-ws');
    
  2. 將下列常數新增至 listener.js 檔案,以取得混合式連線詳細數據。 將括弧中的佔位元取代為您在建立混合式連線時取得的值。

    • const ns - 轉寄命名空間。 請務必使用完整命名空間名稱;例如, {namespace}.servicebus.windows.net
    • const path - 混合式連線的名稱。
    • const keyrule - 預設為共用存取原則金鑰 RootManageSharedAccessKey 的名稱。
    • const key - 您稍早儲存之命名空間的主鍵。
  3. 將下列程式碼新增至 listener.js 檔案:

    var wss = WebSocket.createRelayedServer(
    {
        server : WebSocket.createRelayListenUri(ns, path),
        token: WebSocket.createRelayToken('http://' + ns, keyrule, key)
    }, 
    function (ws) {
        console.log('connection accepted');
        ws.onmessage = function (event) {
            console.log(event.data);
        };
        ws.on('close', function () {
            console.log('connection closed');
        });       
    });
    
    console.log('listening');
    
    wss.on('error', function(err) {
        console.log('error' + err);
    });
    

    以下是您的listener.js檔案看起來應該像這樣:

    const WebSocket = require('hyco-ws');
    
    const ns = "{RelayNamespace}";
    const path = "{HybridConnectionName}";
    const keyrule = "{SASKeyName}";
    const key = "{SASKeyValue}";
    
    var wss = WebSocket.createRelayedServer(
        {
            server : WebSocket.createRelayListenUri(ns, path),
            token: WebSocket.createRelayToken('http://' + ns, keyrule, key)
        }, 
        function (ws) {
            console.log('connection accepted');
            ws.onmessage = function (event) {
                console.log(event.data);
            };
            ws.on('close', function () {
                console.log('connection closed');
            });       
    });
    
    console.log('listening');
    
    wss.on('error', function(err) {
        console.log('error' + err);
    });
    

建立用戶端應用程式 (寄件者)

若要將訊息傳送至轉送,請撰寫Node.js主控台應用程式。

建立 Node.js 應用程式

建立名為 sender.js的新 JavaScript 檔案。

新增轉 封裝管理員 套件

npm install hyco-ws從項目資料夾中的 Node 命令提示字元執行。

撰寫一些程式代碼來傳送訊息

  1. 將下列 constants 內容新增至檔案頂 sender.js 端。

    const WebSocket = require('hyco-ws');
    const readline = require('readline')
        .createInterface({
            input: process.stdin,
            output: process.stdout
        });;
    
  2. 將下列常數新增至 sender.js 檔案,以取得混合式連線詳細數據。 將括弧中的佔位元取代為您在建立混合式連線時取得的值。

    • const ns - 轉寄命名空間。 請務必使用完整命名空間名稱;例如, {namespace}.servicebus.windows.net
    • const path - 混合式連線的名稱。
    • const keyrule - 預設為共用存取原則金鑰 RootManageSharedAccessKey 的名稱。
    • const key - 您稍早儲存之命名空間的主鍵。
  3. 將下列程式碼新增至 sender.js 檔案:

    WebSocket.relayedConnect(
        WebSocket.createRelaySendUri(ns, path),
        WebSocket.createRelayToken('http://'+ns, keyrule, key),
        function (wss) {
            readline.on('line', (input) => {
                wss.send(input, null);
            });
    
            console.log('Started client interval.');
            wss.on('close', function () {
                console.log('stopping client interval');
                process.exit();
            });
        }
    );
    

    以下是您的sender.js檔案看起來應該像這樣:

    const WebSocket = require('hyco-ws');
    const readline = require('readline')
        .createInterface({
            input: process.stdin,
            output: process.stdout
        });;
    
    const ns = "{RelayNamespace}";
    const path = "{HybridConnectionName}";
    const keyrule = "{SASKeyName}";
    const key = "{SASKeyValue}";
    
    WebSocket.relayedConnect(
        WebSocket.createRelaySendUri(ns, path),
        WebSocket.createRelayToken('http://'+ns, keyrule, key),
        function (wss) {
            readline.on('line', (input) => {
                wss.send(input, null);
            });
    
            console.log('Started client interval.');
            wss.on('close', function () {
                console.log('stopping client interval');
                process.exit();
            });
        }
    );
    

執行應用程式

  1. 執行伺服器應用程式:從Node.js命令提示字元輸入 node listener.js

  2. 執行用戶端應用程式:從Node.js命令提示字元輸入 node sender.js,然後輸入一些文字。

  3. 確定伺服器應用程式主控台會輸出用戶端應用程式中輸入的文字。

    主控台視窗會同時測試伺服器和用戶端應用程式。

恭喜您,您已使用 Node.js 建立端對端混合式 連線 應用程式!

下一步

在本快速入門中,您已建立Node.js使用 WebSocket 來傳送和接收訊息的客戶端和伺服器應用程式。 Azure 轉送的混合式 連線 功能也支援使用 HTTP 來傳送和接收訊息。 若要瞭解如何搭配 Azure 轉送混合式 連線 使用 HTTP,請參閱 Node.js HTTP 快速入門

在本快速入門中,您已使用Node.js來建立客戶端和伺服器應用程式。 若要瞭解如何使用 .NET Framework 撰寫用戶端和伺服器應用程式,請參閱 .NET WebSockets 快速入門.NET HTTP 快速入門