Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam artikel ini, Anda akan mempelajari cara membuat aplikasi obrolan menggunakan Web PubSub untuk Socket.IO dalam Mode Tanpa Server dengan Azure Functions. Tutorial ini akan memandu Anda mengamankan aplikasi Anda dengan autentikasi berbasis identitas, saat bekerja secara online.
Sumber proyek menggunakan Bicep untuk menyebarkan infrastruktur di Azure, dan Azure Functions Core Tools untuk menyebarkan kode ke Aplikasi Fungsi.
Prasyarat
Akun Azure dengan langganan aktif. Buat akun secara gratis.
Mendapatkan kode sampel
Temukan kode sampel: Socket.IO Sampel Tanpa Server (TS)
git clone https://github.com/Azure/azure-webpubsub.git
cd ./sdk/webpubsub-socketio-extension/examples/chat-serverless-typescript
Menyebarkan infrastruktur
Sampel obrolan perlu menyebarkan beberapa layanan di Azure:
- Aplikasi Fungsi Azure
- Web PubSub untuk Socket.IO
- Identitas Terkelola: Identitas untuk berkomunikasi antar layanan
Kami menggunakan Bicep untuk menyebarkan infrastruktur. File ditemukan di ./infra folder . Sebarkan dengan perintah az:
az deployment sub create -n "<deployment-name>" -l "<deployment-location>" --template-file ./infra/main.bicep --parameters environmentName="<env-name>" location="<location>"
-
<deployment-name>: Nama penyebaran. -
<deployment-location>: Lokasi metadata penyebaran. Perhatikan bahwa ini bukan lokasi tempat sumber daya disebarkan. -
<env-name>: Nama adalah bagian dari nama grup sumber daya dan nama sumber daya. -
<location>: Lokasi sumber daya.
Tinjauan infrastruktur
Dalam rilis infrastruktur, kami menyebarkan Aplikasi Fungsi Azure dalam paket konsumsi dan Akun Monitor dan Penyimpanan yang diperlukan oleh Aplikasi Fungsi. Kami juga menyebarkan Web PubSub untuk sumber daya Socket.IO dalam Mode Tanpa Server.
Untuk tujuan autentikasi berbasis identitas, kami menyebarkan identitas terkelola yang ditetapkan pengguna, menetapkannya ke Aplikasi Fungsi dan sumber daya Socket.IO dan memberikannya dengan beberapa izin:
- Peran Pemilik Data Blob Penyimpanan: Mengakses penyimpanan untuk Aplikasi Fungsi
- Memantau peran Penerbit Metrik: Pemantau akses untuk Aplikasi Fungsi
- Peran Pemilik Layanan Web PubSub: Mengakses Web PubSub untuk Socket.IO untuk Aplikasi Fungsi
Sesuai Konfigurasikan aplikasi Azure Functions Anda untuk menggunakan masuk Microsoft Entra, kami membuat Perwakilan Layanan. Untuk menghindari penggunaan rahasia untuk Perwakilan Layanan, kami menggunakan kredensial identitas Federasi.
Menyebarkan sampel ke Aplikasi Fungsi
Kami menyiapkan skrip bash untuk menyebarkan kode sampel ke Aplikasi Fungsi:
# Deploy the project
./deploy/deploy.sh "<deployment-name>"
Tinjau detail penyebaran
Kita perlu melakukan dua langkah untuk menyebarkan aplikasi sampel.
Menerbitkan kode ke Aplikasi Fungsi (Menggunakan Azure Functions Core Tools)
func extensions sync npm install npm run build func azure functionapp publish <function-app-name>Konfigurasikan Web PubSub untuk Socket.IO untuk menambahkan pengaturan hub yang dapat mengirim permintaan ke Aplikasi Fungsi. Sesuai batasan penyedia Webhook Aplikasi Fungsi, Anda perlu mendapatkan kunci ekstensi yang diisi oleh Fungsi. Dapatkan detail selengkapnya dalam Pengikatan Pemicu. Dan saat kami menggunakan autentikasi berbasis identitas, di pengaturan hub, Anda perlu menetapkan sumber daya target, yang merupakan clientId dari Perwakilan Layanan yang dibuat sebelumnya.
code=$(az functionapp keys list -g <resource-group> -n <function-name> --query systemKeys.socketio_extension -o tsv) az webpubsub hub create -n <socketio-name> -g <resource-group> --hub-name "hub" --event-handler url-template="https://${<function-name>}.azurewebsites.net/runtime/webhooks/socketio?code=${code}" user-event-pattern="*" auth-type="ManagedIdentity" auth-resource="<service-principal-client-id>"
Jalankan Aplikasi Sampel
Setelah kode disebarkan, kunjungi situs web untuk mencoba sampel:
https://<function-endpoint>/api/index
Langkah berikutnya
Selanjutnya, Anda dapat mengikuti tutorial untuk menulis aplikasi langkah demi langkah: