Bagikan melalui


Mendorong pesan dari server

Model permintaan/respons HTTP yang akrab dirancang agar mudah dikerjakan dan dapat diskalakan. Namun, saat ini pengguna akhir menuntut lebih banyak dari web daripada yang awalnya dirancang untuk. Protokol HTTP mengharuskan pengguna untuk memulai permintaan untuk menerima respons. Tetapi pengembang membutuhkan cara untuk mengirim data dari server ke klien tanpa mereka memintanya; dengan kata lain, mereka perlu "mendorong" data ke klien, seperti mendorong harga penawaran terbaru produk di situs lelang atau harga saham yang bergerak cepat dalam aplikasi keuangan.

GIF server aplikasi mendorong data ke klien yang terhubung.

Panduan mulai cepat ini menunjukkan cara

  • berlangganan pesan dari server aplikasi
  • mendorong data dari server aplikasi ke semua klien yang terhubung

Prasyarat

  • Sumber daya Web PubSub. Jika belum membuatnya, Anda dapat mengikuti panduan: Membuat sumber daya Web PubSub
  • Penyunting kode, seperti Visual Studio Code
  • Instal dependensi untuk bahasa yang Anda rencanakan untuk digunakan

Membuat klien pelanggan

Untuk berlangganan pesan yang didorong dari server aplikasi Anda, klien, baik itu browser, aplikasi seluler, atau perangkat IoT, perlu terhubung ke sumber daya Web PubSub Anda terlebih dahulu, dan mendengarkan peristiwa pesan yang sesuai.

Membuat direktori proyek bernama subscriber dan menginstal dependensi yang diperlukan

mkdir subscriber
cd subscriber
npm init -y
    
# The client SDK is available as a module on NPM
npm install @azure/web-pubsub-client

Sambungkan ke sumber daya Web PubSub Anda dan daftarkan pendengar untuk acara tersebut server-message

Klien menggunakan URL Akses Klien untuk menyambungkan dan mengautentikasi dengan sumber daya Anda. URL ini mengikuti pola wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>. Klien dapat memiliki beberapa cara untuk mendapatkan URL Akses Klien. Untuk mulai cepat ini, Anda dapat menyalin dan menempelkannya dari portal Azure diperlihatkan dalam diagram berikut. Praktik terbaik adalah tidak mengodekan URL Akses Klien dalam kode Anda. Di dunia produksi, kami biasanya menyiapkan server aplikasi untuk mengembalikan URL ini sesuai permintaan. Hasilkan URL Akses Klien menjelaskan praktik secara rinci.

Diagram menunjukkan cara mendapatkan url akses klien.

Seperti yang ditunjukkan pada diagram di atas, klien bergabung dengan hub bernama myHub1.

subscriber Di folder proyek, buat file bernama subscribe.js dengan kode berikut

const { WebPubSubClient } = require("@azure/web-pubsub-client");

// Instantiates the client object
// <client-access-url> is copied from Azure portal mentioned above
const client = new WebPubSubClient("<client-access-url>")

// Registers a handler for the "server-message" event
client.on("server-message", (e) => {
    console.log(`Received message ${e.message.data}`)
});

// Before a client can receive a message, 
// you must invoke start() on the client object.
client.start();

Jalankan program

node subscribe.js

Sekarang klien ini membuat koneksi dengan sumber daya Web PubSub Anda dan siap untuk menerima pesan yang didorong dari server aplikasi Anda.

Mendorong pesan dari server aplikasi Anda

Sekarang setelah klien menghubungkan sumber daya Web PubSub, Anda dapat mendorong pesan dari server aplikasi kapan saja menggunakan SDK server yang disediakan oleh Web PubSub.

Membuat direktori proyek baru bernama publisher dan menginstal dependensi yang diperlukan

mkdir publisher
cd publisher

npm init

# This command installs the server SDK from NPM, 
# which is different from the client SDK you used in subscribe.js
npm install --save @azure/web-pubsub

Buat publish.js file dengan kode berikut

const { WebPubSubServiceClient } = require('@azure/web-pubsub');

// This is the hub name we used on Azure portal when generating the Client Access URL. 
// It ensures this server can push messages to clients in the hub named "myHub1".
const hub = "myHub1";
    
let server = new WebPubSubServiceClient(process.env.WebPubSubConnectionString, hub);

// By default, the content type is `application/json`. 
// Specify contentType as `text/plain` for this demo.
server.sendToAll(process.argv[2], { contentType: "text/plain" });

Panggilan server.sendToAll() mengirim pesan ke semua klien yang terhubung di hub.

Dapatkan string koneksi

Penting

String koneksi menyertakan informasi otorisasi yang diperlukan aplikasi Anda untuk mengakses layanan Web PubSub. Kunci akses di dalam string koneksi mirip dengan kata sandi root untuk layanan Anda.

Untuk panduan mulai cepat ini, kita akan mendapatkannya dari portal Azure seperti yang ditunjukkan di bawah ini. Diagram memperlihatkan cara mendapatkan url akses klien.

Jalankan program server

Jalankan perintah berikut di shell perintah baru .

# Set the environment variable for your connection string.
export WebPubSubConnectionString="<Put your connection string here>" 

node publish.js "Hello World"

Amati pesan yang diterima di sisi klien

GIF menunjukkan server aplikasi yang mendorong data ke klien yang terhubung.

Coba jalankan program "berlangganan" yang sama di beberapa shell perintah untuk merangsang lebih dari klien. Segera setelah program "terbitkan" dijalankan, Anda akan melihat pesan dikirimkan secara real time kepada semua klien ini.

Ringkasan

Mulai cepat ini menunjukkan betapa mudahnya mendorong pesan dari server aplikasi ke semua klien yang terhubung di hub. Selain itu, Web PubSub memungkinkan Anda untuk mendorong pesan ke

  • subset klien di hub
  • grup tertentu di hub
  • subset klien dalam grup

API ini memungkinkan banyak kasus penggunaan, memungkinkan pengembang untuk fokus pada logika bisnis yang unik sambil yakin bahwa Web PubSub menawarkan latensi rendah (<100ms),ketersediaan tinggi dan skala besar (juta+ koneksi bersamaan).

Langkah berikutnya

Pada langkah berikutnya, kita akan mengeksplorasi cara bekerja dengan sistem peristiwa Web PubSub, yang diperlukan untuk membangun aplikasi web yang lengkap.