Bagikan melalui


Mulai cepat: Membangun aplikasi obrolan dengan Azure Function dalam Mode Tanpa Server Socket.IO (Pratinjau)

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

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:

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

Cuplikan layar aplikasi obrolan tanpa server.

Langkah berikutnya

Selanjutnya, Anda dapat mengikuti tutorial untuk menulis aplikasi langkah demi langkah: