Aracılığıyla paylaş


Hızlı Başlangıç: Socket.IO Sunucusuz Modda Azure İşlevi ile sohbet uygulaması oluşturma (Önizleme)

Bu makalede, Azure İşlevleri ile Sunucusuz Modda Socket.IO için Web PubSub kullanarak sohbet uygulaması oluşturmayı öğreneceksiniz. Öğretici, çevrimiçi çalışırken kimlik tabanlı kimlik doğrulaması ile uygulamanızın güvenliğini sağlama konusunda size yol gösterir.

Proje kaynağı, Azure'da altyapıyı dağıtmak için Bicep'i ve kodu İşlev Uygulamasına dağıtmak için Core Tools'Azure İşlevleri kullanır.

Önkoşullar

Örnek kodunu alma

Örnek kodu bulun: Socket.IO Sunucusuz Örnek (TS)

git clone https://github.com/Azure/azure-webpubsub.git
cd ./sdk/webpubsub-socketio-extension/examples/chat-serverless-typescript

Altyapı dağıtımı

Sohbet örneklerinin Azure'da birkaç hizmet dağıtması gerekir:

Altyapıyı dağıtmak için Bicep'i kullanırız. Dosya klasöründe bulunur ./infra . az komutuyla dağıtın:

az deployment sub create -n "<deployment-name>" -l "<deployment-location>" --template-file ./infra/main.bicep --parameters environmentName="<env-name>" location="<location>"
  • <deployment-name>: Dağıtımın adı.
  • <deployment-location>: Dağıtım meta verilerinin konumu. Kaynakların dağıtıldığı konum olmadığını unutmayın.
  • <env-name>: Ad, kaynak grubu adının ve kaynak adının bir parçasıdır.
  • <location>: Kaynakların konumu.

Altyapının gözden geçirilmesi

Altyapı sürümünde, tüketim planında bir Azure İşlev Uygulaması ve İşlev Uygulamasının gerektirdiği İzleyici ve Depolama Hesabı'nı dağıtacağız. Ayrıca Sunucusuz Modda Socket.IO kaynak için bir Web PubSub dağıtırız.

Kimlik tabanlı kimlik doğrulaması amacıyla, kullanıcı tarafından atanan bir yönetilen kimlik dağıtacak, bunu hem İşlev Uygulamasına hem de Socket.IO kaynağına atayacağız ve ona bazı izinler verilmektedir:

  • Depolama Blobu Veri Sahibi rolü: İşlev Uygulaması için erişim depolama alanı
  • Ölçüm Yayımcısı rolünü izleme: İşlev Uygulaması için erişim izleyicisi
  • Web PubSub Hizmeti Sahibi rolü: İşlev Uygulaması için Socket.IO için Web PubSub'a Erişme

Azure İşlevleri uygulamanızı Microsoft Entra oturum açma özelliğini kullanacak şekilde yapılandırmaya göre bir Hizmet Sorumlusu oluştururuz. Hizmet Sorumlusu için gizli dizi kullanmaktan kaçınmak için Federasyon kimliği kimlik bilgilerini kullanırız.

İşlev Uygulamasına örnek dağıtma

Örnek kodu İşlev Uygulamasına dağıtmak için bir bash betiği hazırladık:

# Deploy the project
./deploy/deploy.sh "<deployment-name>"

Dağıtım ayrıntılarını gözden geçirin

Örnek uygulamayı dağıtmak için iki adım gerçekleştirmemiz gerekir.

  • İşlev Uygulaması'nda kod yayımlama (Azure İşlevleri Çekirdek Araçları'nı kullanma)

    func extensions sync
    npm install
    npm run build
    func azure functionapp publish <function-app-name>
    
  • web PubSub'ı Socket.IO için yapılandırarak İşlev Uygulamasına istek gönderebilen bir hub ayarı ekleyin. İşlev Uygulamasının Web Kancası sağlayıcısının sınırlamasına göre İşlev tarafından doldurulan bir uzantı anahtarı almanız gerekir. Tetikleyici Bağlaması'nda daha fazla ayrıntı alın. Kimlik tabanlı kimlik doğrulamasını kullandığımız için hub ayarlarında, daha önce oluşturulan Hizmet Sorumlusunun clientId değeri olan hedef kaynağı atamanız gerekir.

    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>"
    

Örnek Uygulamayı Çalıştırma

Kod dağıtıldıktan sonra örneği denemek için web sitesini ziyaret edin:

https://<function-endpoint>/api/index

Sunucusuz sohbet uygulamasının ekran görüntüsü.

Sonraki adımlar

Ardından, uygulamayı adım adım yazmak için öğreticiyi izleyebilirsiniz: