快速入門:使用 Azure Web PubSub 服務 SDK 發佈訊息
本文內容
Azure Web PubSub 可協助您管理 WebSocket 用戶端。 本快速入門說明如何使用 Azure Web PubSub 服務 SDK 將訊息發佈至 WebSocket 用戶端。
必要條件
Azure 訂用帳戶,如果您還沒有訂用帳戶,請建立一個免費帳戶 。
Bash 和 PowerShell 命令殼層。 Python、JavaScript 和 Java 範例需要 Bash 命令殼層。
檔案編輯器,例如 VSCode。
Azure CLI:安裝 Azure CLI
如果在本機電腦上建立專案,您必須安裝所使用語言的相依性:
同時安裝 .NET Core SDK 和 aspnetcore
及 dotnet 執行階段。
.NET Core
1.安裝程式
若要從 CLI 登入 Azure,請執行下列命令,並遵循提示來完成驗證程序。 如果您是使用 Cloud Shell,則不需要登入。
az login
確定您是透過升級命令執行最新版的 CLI。
az upgrade
接下來,如果尚未與 az upgrade
一起安裝,請安裝或更新適用於 CLI 的 Azure Web PubSub 延伸模組。
az extension add --name webpubsub --upgrade
1.建立資源群組
設定下列環境變數。 使用唯一 Web PubSub 名稱取代<預留位置>。
RESOURCE_GROUP="webpubsub-resource-group"
LOCATION="EastUS"
WEB_PUBSUB_NAME="<your-unique-name>"
$ResourceGroupName = 'webpubsub-resource-group'
$Location = 'EastUS'
$WebPubSubName = '<YourUniqueName>'
建立 Web PubSub 專案的資源群組。
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
az group create --location $Location --name $ResourceGroupName
2.部署 Web PubSub 服務執行個體
使用 az webpubsub create
命令來建立及部署 Web PubSub 服務執行個體。
az webpubsub create \
--name $WEB_PUBSUB_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--sku Free_F1
az webpubsub create `
--name $WebPubSubName `
--location $Location `
--resource-group $ResourceGroupName `
--sku Free_F1
儲存服務的連接字串。 服務 SDK 會使用連接字串來發佈訊息。
重要
在實際執行環境中,您應該使用 Azure Key Vault 安全地儲存連接字串。
az webpubsub key show --name $WEB_PUBSUB_NAME --resource-group $RESOURCE_GROUP --query primaryConnectionString
az webpubsub key show --name $WebPubSubName --resource-group $ResourceGroupName --query primaryConnectionString
3.將用戶端連線至服務執行個體
建立 Web PubSub 用戶端。 用戶端會維護服務的連線,直到服務終止為止。
使用 az webpubsub client
命令來啟動服務的 WebSocket 用戶端連線。 用戶端一律會連線到中樞,因此請提供要連線之用戶端的中樞名稱。
az webpubsub client start \
--name $WEB_PUBSUB_NAME \
--resource-group $RESOURCE_GROUP \
--hub-name "myHub1" \
--user-id "user1"
az webpubsub client start `
--name $WebPubSubName `
--resource-group $ResourceGroupName `
--hub-name 'myHub1' `
--user-id 'user1'
當您看到 JSON 訊息指出用戶端現已成功連線,並且獲指派唯一的 connectionId
時,與 Web PubSub 服務的連線已建立:
{"type":"system","event":"connected","userId":"user1","connectionId":"<your_unique_connection_id>"}
4.使用服務 SDK 發佈訊息
您將會使用 Azure Web PubSub SDK,將訊息發佈給連線至中樞的所有用戶端。
您可以在 C#、JavaScript、Python 及 Java 之間選擇。 每個語言的相依性都會安裝在該語言的步驟中。 Python、JavaScript 和 Java 需要 bash 殼層,才能執行本快速入門中的命令。
設定專案以發佈訊息
開啟此專案的新命令殼層。
從用戶端殼層儲存連接字串。 使用先前步驟中顯示的連接字串來取代 <your_connection_string>
預留位置。
connection_string="<your_connection_string>"
$connection_string = "<your_connection_string>"
現在,為您的專案選取語言。
新增名為 publisher
的新專案,以及名為 Azure.Messaging.WebPubSub
的 SDK 套件。
mkdir publisher
cd publisher
dotnet new console
dotnet add package Azure.Messaging.WebPubSub
更新 Program.cs
檔案,以使用 WebPubSubServiceClient
類別將訊息傳送至用戶端。 使用下列程式碼取代 Program.cs
檔案中的程式碼。
using System;
using System.Threading.Tasks;
using Azure.Messaging.WebPubSub;
namespace publisher
{
class Program
{
static async Task Main(string[] args)
{
if (args.Length != 3) {
Console.WriteLine("Usage: publisher <connectionString> <hub> <message>");
return;
}
var connectionString = args[0];
var hub = args[1];
var message = args[2];
var service = new WebPubSubServiceClient(connectionString, hub);
// Send messages to all the connected clients
// You can also try SendToConnectionAsync to send messages to the specific connection
await service.SendToAllAsync(message);
}
}
}
service.SendToAllAsync()
呼叫只會將訊息傳送至中樞中的所有已連線用戶端。
執行下列命令,將訊息發佈至服務。
dotnet run $connection_string "myHub1" "Hello World"
包含 Web PubSub 用戶端的先前命令殼層會顯示已接收的訊息。
{"type":"message","from":"server","dataType":"text","data":"Hello World"}
針對此專案建立名為 publisher
的新資料夾,並且安裝必要的相依性:
mkdir publisher
cd publisher
npm init -y
npm install --save @azure/web-pubsub
使用 Azure Web PubSub SDK 將訊息發佈至服務。 建立包含程式碼的 publish.js
檔案:
const { WebPubSubServiceClient } = require('@azure/web-pubsub');
if (process.argv.length !== 3) {
console.log('Usage: node publish <message>');
return 1;
}
const hub = "myHub1";
let service = new WebPubSubServiceClient(process.env.WebPubSubConnectionString, hub);
// by default it uses `application/json`, specify contentType as `text/plain` if you want plain-text
service.sendToAll(process.argv[2], { contentType: "text/plain" });
sendToAll()
呼叫只會將訊息傳送至中樞中的所有已連線用戶端。
執行下列命令,將訊息發佈至服務:
export WebPubSubConnectionString=$connection_string
node publish "Hello World"
包含 Web PubSub 用戶端的先前命令殼層會顯示已接收的訊息。
{"type":"message","from":"server","dataType":"text","data":"Hello World"}
針對此專案建立名為 publisher
的新資料夾,並且安裝必要的相依性:
mkdir publisher
cd publisher
# Create venv
python -m venv env
# Active venv
source ./env/bin/activate
pip install azure-messaging-webpubsubservice
使用 Azure Web PubSub SDK 將訊息發佈至服務。 使用以下程式碼建立 publish.py
檔案:
import sys
from azure.messaging.webpubsubservice import WebPubSubServiceClient
if __name__ == '__main__':
if len(sys.argv) != 4:
print('Usage: python publish.py <connection-string> <hub-name> <message>')
exit(1)
connection_string = sys.argv[1]
hub_name = sys.argv[2]
message = sys.argv[3]
service = WebPubSubServiceClient.from_connection_string(connection_string, hub=hub_name)
res = service.send_to_all(message, content_type='text/plain')
print(res)
service.send_to_all()
方法會將訊息傳送至中樞中的所有已連線用戶端。
執行下列命令,將訊息發佈至服務:
python publish.py $connection_string "myHub1" "Hello World"
包含 Web PubSub 用戶端的先前命令殼層會顯示已接收的訊息。
{"type":"message","from":"server","dataType":"text","data":"Hello World"}
使用 Maven 建立名為 webpubsub-quickstart-publisher
的新主控台應用程式,並移至 webpubsub-quickstart-publisher 目錄:
mvn archetype:generate --define interactiveMode=n --define groupId=com.webpubsub.quickstart --define artifactId=webpubsub-quickstart-publisher --define archetypeArtifactId=maven-archetype-quickstart --define archetypeVersion=1.4
cd webpubsub-quickstart-publisher
將 Azure Web PubSub SDK 新增至 pom.xml
的 dependencies
節點:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-messaging-webpubsub</artifactId>
<version>1.0.0</version>
</dependency>
移至 src/main/java/com/webpubsub/quickstart 目錄。
使用下列程式碼取代 App.java 檔案的內容:
package com.webpubsub.quickstart;
import com.azure.messaging.webpubsub.*;
import com.azure.messaging.webpubsub.models.*;
/**
* Publish messages using Azure Web PubSub service SDK
*
*/
public class App
{
public static void main( String[] args )
{
if (args.length != 3) {
System.out.println("Expecting 3 arguments: <connection-string> <hub-name> <message>");
return;
}
WebPubSubServiceClient service = new WebPubSubServiceClientBuilder()
.connectionString(args[0])
.hub(args[1])
.buildClient();
service.sendToAll(args[2], WebPubSubContentType.TEXT_PLAIN);
}
}
此程式碼會使用 Azure Web PubSub SDK 將訊息發佈至服務。 service.sendToAll()
呼叫會將訊息傳送至中樞中的所有已連線用戶端。
傳回 包含 pom.xml 檔案的 webpubsub-quickstart-publisher 目錄,並且使用下列 mvn
命令來編譯專案。
mvn compile
建置套件。
mvn package
執行下列 mvn
命令,執行應用程式以將訊息發佈至服務:
mvn exec:java -Dexec.mainClass="com.webpubsub.quickstart.App" -Dexec.cleanupDaemonThreads=false -Dexec.args=" '$connection_string' 'myHub1' 'Hello World'"
包含 Web PubSub 用戶端的先前命令殼層會顯示已接收的訊息。
{"type":"message","from":"server","dataType":"text","data":"Hello World"}
清理
您可以藉由刪除包含資源的資源群組,刪除在本快速入門中建立的資源。
az group delete --name $RESOURCE_GROUP --yes
d
az group delete --name $ResourceGroup --yes
下一步
本快速入門提供如何連線至 Web PubSub 服務,以及如何將訊息發佈至已連線用戶端的基本概念。
在真實世界的應用程式中,您可以使用各種語言的 SDK 來建置您自己的應用程式。 我們也提供函式延伸模組,讓您輕鬆地建置無伺服器應用程式。
使用這些資源開始建置自己的應用程式: