빠른 시작: 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에서 메시지를 게시하는 데 사용됩니다.
Important
프로덕션 환경에서는 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'
이제 클라이언트가 성공적으로 연결되고 고유한 connectionId
가 할당됨을 나타내는 JSON 메시지를 표시되면 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
라는 새 프로젝트와 SDK 패키지 Azure.Messaging.WebPubSub
를 추가합니다.
mkdir publisher
cd publisher
dotnet new console
dotnet add package Azure.Messaging.WebPubSub
WebPubSubServiceClient
클래스를 사용하여 클라이언트에 메시지를 보내도록 Program.cs
파일을 업데이트합니다. 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
pom.xml
의 dependencies
노드에 Azure Web PubSub SDK를 추가합니다.
<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를 사용하여 고유한 애플리케이션을 빌드할 수 있습니다. 또한 서버리스 애플리케이션을 쉽게 빌드할 수 있도록 함수 확장도 제공합니다.
다음 리소스를 사용하여 사용자 고유의 애플리케이션 빌드를 시작합니다.