Tutorial: Menerbitkan dan berlangganan pesan menggunakan API WebSocket dan SDK layanan Azure Web PubSub

Layanan Azure Web PubSub membantu Anda dengan mudah membangun aplikasi olahpesan web real time. Dalam tutorial ini, Anda akan mempelajari cara berlangganan layanan menggunakan API WebSocket dan menerbitkan pesan menggunakan SDK layanan Web PubSub.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Membuat instans layanan Web PubSub
  • Menghasilkan URL lengkap untuk membuat koneksi WebSocket
  • Membuat klien pelanggan Web PubSub untuk menerima pesan menggunakan protokol WebSocket standar
  • Membuat klien penerbit Web PubSub untuk menerbitkan pesan menggunakan SDK layanan Web PubSub

Prasyarat

  • Langganan Azure, buat akun gratis.
  • Shell perintah Bash. Gunakan shell lokal atau lingkungan Bash di Azure Cloud Shell.
  • Jika berjalan di komputer lokal Anda Instal Azure CLI.

Anda dapat menggunakan shell perintah Windows cmd.exe alih-alih shell Bash untuk menjalankan perintah dalam tutorial ini.

Jika membuat proyek di komputer lokal, Anda harus menginstal dependensi untuk bahasa yang Anda gunakan:

Menyiapkan lingkungan Anda

Penyiapan Azure CLI untuk pengembangan lokal

Ikuti langkah-langkah ini untuk menyiapkan Azure CLI dan lingkungan proyek Anda.

  1. Buka shell perintah.

  2. Tingkatkan ke versi terbaru Azure CLI.

    az upgrade
    
  3. Instal ekstensi Azure CLI untuk Web PubSub.

    az extension add --name webpubsub
    
  4. Masuk ke Azure CLI. Setelah perintah, masukkan kredensial Azure Anda.

    az login
    

Buat grup sumber daya

Grup sumber daya adalah kontainer logis yang disebarkan dan dikelola oleh sumber daya Azure. Gunakan perintah az group create untuk membuat grup sumber daya bernama myResourceGroup di eastus lokasi.

az group create --name myResourceGroup --location EastUS

1. Membuat instans Azure Web PubSub

Membuat instans Web PubSub

Gunakan perintah az webpubsub create Azure CLI untuk membuat Web PubSub di grup sumber daya yang telah Anda buat. Perintah berikut membuat sumber daya Web PubSub Gratis di bawah grup myResourceGroup sumber daya di EastUS:

Setiap sumber daya Web PubSub harus memiliki nama yang unik. Ganti <nama> sumber daya unik Anda dengan nama instans Web PubSub Anda dalam perintah berikut.

az webpubsub create --resource-group myResourceGroup --name <your-unique-resource-name> --location EastUS --sku Free_F1

Keluaran dari perintah ini menunjukkan properti sumber daya yang baru dibuat. Perhatikan dua properti yang tercantum di bawah:

  • nama: Nama Web PubSub yang Anda berikan dalam parameter di --name atas.
  • hostName: Dalam contoh, nama host adalah <your-unique-resource-name>.webpubsub.azure.com/.

Pada titik ini, akun Azure Anda adalah satu-satunya yang berwenang untuk melakukan operasi apa pun di sumber daya baru ini.

Dapatkan string koneksi

Penting

String koneksi menyertakan informasi otorisasi yang diperlukan agar aplikasi Anda mengakses layanan Azure Web PubSub. Kunci akses di dalam string koneksi mirip dengan kata sandi root untuk layanan Anda. Di lingkungan produksi, selalu berhati-hatilah untuk melindungi kunci akses Anda. Gunakan Azure Key Vault untuk mengelola dan memutar kunci Anda dengan aman. Hindari mendistribusikan kunci akses ke pengguna lain, melakukan hard-coding, atau menyimpannya di mana saja dalam teks biasa yang dapat diakses orang lain. Putar kunci Anda jika Anda yakin bahwa kunci tersebut mungkin telah disusupi.

Gunakan perintah Azure CLI az webpubsub key untuk mendapatkan ConnectionString layanan. <your-unique-resource-name> Ganti tempat penampung dengan nama instans Azure Web PubSub Anda.

az webpubsub key show --resource-group myResourceGroup --name <your-unique-resource-name> --query primaryConnectionString --output tsv

Salin string koneksi untuk digunakan nanti.

Membuat klien pelanggan

Klien akan terhubung ke layanan Azure Web PubSub melalui protokol WebSocket standar menggunakan autentikasi JSON Web Token (JWT). SDK layanan menyediakan metode pembantu untuk menghasilkan token. Dalam tutorial ini, pelanggan langsung menghasilkan token dari ConnectionString. Dalam aplikasi nyata, aplikasi sisi server biasanya menangani alur kerja autentikasi/otorisasi. Untuk lebih memahami alur kerja, lihat tutorial Membuat aplikasi obrolan.

  1. Pertama, buat direktori proyek bernama subscriber untuk proyek ini dan instal dependensi yang diperlukan:

    • Paket Websocket.Client adalah paket pihak ketiga yang mendukung koneksi WebSocket. Anda dapat menggunakan API/pustaka apa pun yang mendukung WebSocket.
    • Paket SDK Azure.Messaging.WebPubSub membantu menghasilkan token JWT.
    mkdir subscriber
    cd subscriber
    dotnet new console
    dotnet add package Websocket.Client --version 4.3.30
    dotnet add package Azure.Messaging.WebPubSub --version 1.0.0
    
  2. Ganti kode dalam Program.cs dengan kode berikut yang akan tersambung ke layanan:

    using System;
    using System.Threading.Tasks;
    
    using Azure.Messaging.WebPubSub;
    
    using Websocket.Client;
    
    namespace subscriber
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                if (args.Length != 2)
                {
                    Console.WriteLine("Usage: subscriber <connectionString> <hub>");
                    return;
                }
                var connectionString = args[0];
                var hub = args[1];
    
                // Either generate the URL or fetch it from server or fetch a temp one from the portal
                var serviceClient = new WebPubSubServiceClient(connectionString, hub);
                var url = serviceClient.GetClientAccessUri();
    
                using (var client = new WebsocketClient(url))
                {
                    // Disable the auto disconnect and reconnect because the sample would like the client to stay online even no data comes in
                    client.ReconnectTimeout = null;
                    client.MessageReceived.Subscribe(msg => Console.WriteLine($"Message received: {msg}"));
                    await client.Start();
                    Console.WriteLine("Connected.");
                    Console.Read();
                }
            }
        }
    }
    
    

    Kode membuat koneksi WebSocket yang tersambung ke hub di Web PubSub. Hub adalah unit logis di Web PubSub tempat Anda dapat menerbitkan pesan ke sekelompok klien. Konsep utama berisi penjelasan terperinci tentang istilah yang digunakan di Web PubSub.

    Layanan Web PubSub menggunakan autentikasi JSON Web Token (JWT ). Kode sampel menggunakan WebPubSubServiceClient.GetClientAccessUri() di Web PubSub SDK untuk menghasilkan URL ke layanan yang berisi URL lengkap dengan token akses yang valid.

    Setelah koneksi dibuat, klien Anda menerima pesan melalui koneksi WebSocket. Klien menggunakan client.MessageReceived.Subscribe(msg => ...)); untuk mendengarkan pesan masuk.

  3. Untuk memulai pelanggan, jalankan perintah <Web-PubSub-connection-string> berikut mengganti dengan string koneksi yang Anda salin sebelumnya:

    dotnet run <Web-PubSub-connection-string> "myHub1"
    

2. Menerbitkan pesan menggunakan SDK layanan

Buat penerbit menggunakan Azure Web PubSub SDK untuk menerbitkan pesan ke klien yang tersambung. Untuk proyek ini, Anda harus membuka shell perintah lain.

  1. Pertama, buat direktori proyek bernama publisher dan instal dependensi yang diperlukan:

    mkdir publisher
    cd publisher
    dotnet new console
    dotnet add package Azure.Messaging.WebPubSub
    
  2. Perbarui file Program.cs untuk menggunakan kelas WebPubSubServiceClient dan kirim pesan ke klien.

    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];
    
                // Either generate the token or fetch it from server or fetch a temp one from the portal
                var serviceClient = new WebPubSubServiceClient(connectionString, hub);
                await serviceClient.SendToAllAsync(message);
            }
        }
    }
    
    

    Panggilan SendToAllAsync() hanya mengirim pesan ke semua klien yang tersambung di hub.

  3. Kirim pesan dengan menjalankan perintah berikut. Ganti <Web-PubSub-connection-string> dengan string koneksi yang Anda salin sebelumnya.

    dotnet run <Web-PubSub-connection-string> "myHub1" "Hello World"
    
  4. Periksa shell perintah pelanggan untuk melihat bahwa ia menerima pesan:

    Message received: Hello World
    

Pembersihan

Anda dapat menghapus sumber daya yang Anda buat dalam mulai cepat ini dengan menghapus grup sumber daya yang berisi sumber daya tersebut.

az group delete --name myResourceGroup --yes

Jika Anda tidak berencana untuk terus menggunakan Azure Cloud Shell, Anda dapat menghindari akumulasi biaya dengan menghapus grup sumber daya yang berisi akun penyimpanan terkait. Grup sumber daya diberi nama cloud-shell-storage-<your-region>. Jalankan perintah berikut, ganti <CloudShellResourceGroup> dengan nama grup Cloud Shell.

az group delete --name <CloudShellResourceGroup> --yes

Perhatian

Menghapus grup sumber daya akan menghapus semua sumber daya, termasuk sumber daya yang dibuat di luar cakupan tutorial ini.

Langkah berikutnya

Tutorial ini memberi Anda ide dasar tentang cara menyambungkan ke layanan Web PubSub dan menerbitkan pesan ke klien yang terhubung.

Periksa tutorial lain untuk mempelajari lebih lanjut cara menggunakan layanan.