Aracılığıyla paylaş


Azure İşlevleri için Azure Web PubSub tetikleyici bağlaması

Azure Web PubSub hizmetinden istemci olaylarını işlemek için Azure Web PubSub tetikleyicisini kullanın.

Tetikleyici uç noktası deseni aşağıdaki gibi olur ve Web PubSub hizmeti tarafında ayarlanmalıdır (Portal: ayarlar -> olay işleyicisi -> URL Şablonu). Uç nokta düzeninde, güvenlik nedeniyle Azure İşlev Uygulaması'nı kullanırken sorgu bölümü code=<API_KEY> GEREKLİ olur. Anahtar Azure portalında bulunabilir. İşlev uygulaması kaynağınızı bulun ve işlev uygulamasını Azure'a dağıttığınızda İşlevler ->Uygulama anahtarları ->Sistem anahtarları ->webpubsub_extension gidin. Ancak, yerel işlevlerle çalışırken bu anahtar gerekli değildir.

<Function_App_Url>/runtime/webhooks/webpubsub?code=<API_KEY>

İşlev sistemi anahtarlarını alma seçeneğinin ekran görüntüsü.

Örnek

Aşağıdaki örnek, istemcilerden gelen kullanıcı olaylarının nasıl işleneceğini gösterir.

[Function("Broadcast")]
public static void Run(
[WebPubSubTrigger("<hub>", WebPubSubEventType.User, "message")] UserEventRequest request, ILogger log)
{
    log.LogInformation($"Request from: {request.ConnectionContext.UserId}");
    log.LogInformation($"Request message data: {request.Data}");
    log.LogInformation($"Request message dataType: {request.DataType}");
}

WebPubSubTrigger bağlama, sunucu istemci isteğini denetleyip reddedebildiği veya doğrudan arayana ileti gönderebildiği sistem ve kullanıcı olayı gibi Connect eşitleme senaryolarında dönüş değerini de destekler. Connect ve olay saygıları ConnectEventResponseEventErrorResponseve kullanıcı olayına saygı gösterir UserEventResponse ve EventErrorResponsegeçerli senaryoyla eşleşmeyen rest türleri yoksayılır.

[Function("Broadcast")]
public static UserEventResponse Run(
[WebPubSubTrigger("<hub>", WebPubSubEventType.User, "message")] UserEventRequest request)
{
    return new UserEventResponse("[SYSTEM ACK] Received.");
}
const { app, trigger } = require('@azure/functions');

const wpsTrigger = trigger.generic({
    type: 'webPubSubTrigger',
    name: 'request',
    hub: '<hub>',
    eventName: 'message',
    eventType: 'user'
});

app.generic('message', {
    trigger: wpsTrigger,
    handler: async (request, context) => {
        context.log('Request from: ', request.connectionContext.userId);
        context.log('Request message data: ', request.data);
        context.log('Request message dataType: ', request.dataType);
    }
});

WebPubSubTrigger bağlama, sunucu istemci isteğini denetleyip reddedebildiği veya doğrudan istek istemcisine ileti gönderebildiği sistem ve kullanıcı olayı gibi Connect eşitleme senaryolarında dönüş değerini de destekler. JavaScript'te zayıf yazılan dilde, nesne anahtarlarıyla ilgili olarak seri durumdan çıkarılır. Geri EventErrorResponse kalan nesnelerle karşılaştırıldığında en yüksek önceliğe sahip olan bu değer, dönüşte ise code olarak ayrıştırılır EventErrorResponse.

app.generic('message', {
    trigger: wpsTrigger,
    handler: async (request, context) => {
          return {
              "data": "ack",
              "dataType" : "text"
          };
    }
});

Not

Bu dil için tam örnekler beklemede.

Not

Java için Web PubSub uzantıları henüz desteklenmemektedir.

Yapılandırma

Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

function.json özelliği Öznitelik özelliği Açıklama
türü yok Gerekli - olarak webPubSubTriggerayarlanmalıdır.
yön yok Gerekli - olarak inayarlanmalıdır.
ad yok Gerekli - olay verilerini alan parametre için işlev kodunda kullanılan değişken adı.
göbek Merkez Gerekli - değerin, işlevin tetiklenebilmesi için Web PubSub hub'ının adına ayarlanması gerekir. özniteliğindeki değeri daha yüksek öncelik olarak ayarlamayı destekliyoruz veya uygulama ayarlarında genel değer olarak ayarlanabilir.
etkinlikTürü WebPubSubEventType Gerekli - değerin, işlevin tetiklenebilmesi için iletilerin olay türü olarak ayarlanması gerekir. Değer veya usersystemolmalıdır.
eventName Etkinlik Adı Gerekli - değerin, işlevin tetiklenebilmesi için iletilerin olayı olarak ayarlanması gerekir.

Olay system türü için olay adı , , connectconnectediçinde olmalıdırdisconnected.

Kullanıcı tanımlı altprotocol'lar için olay adı şeklindedirmessage.

Sistem tarafından desteklenen altprotocol json.webpubsub.azure.v1.için, olay adı kullanıcı tanımlı olay adıdır.
clientProtocols ClientProtocols İsteğe bağlı - Web PubSub tetikleyici işlevlerini tetikleyebilen istemci protokollerini belirtir.

Aşağıdaki büyük/küçük harfe duyarlı olmayan değerler geçerlidir:
allTüm istemci protokollerini kabul eder. Varsayılan değer.
webPubSub: Yalnızca Web PubSub protokollerini kabul eder.
mqtt: Yalnızca MQTT protokollerini kabul eder.
bağlantı Bağlantı İsteğe bağlı - yukarı akış Azure Web PubSub hizmetini belirten bir uygulama ayarlarının veya ayar koleksiyonunun adı. Değer, imza doğrulaması için kullanılır. Değer varsayılan olarak uygulama ayarlarıyla WebPubSubConnectionString otomatik olarak çözümlenir. Ayrıca null doğrulamanın gerekli olmadığı ve her zaman başarılı olduğu anlamına gelir.

Önemli

En iyi güvenlik için, işlev uygulamanız paylaşılan gizli anahtar içeren bir bağlantı dizesi kullanmak yerine Web PubSub hizmetine bağlanırken yönetilen kimlikleri kullanmalıdır. Daha fazla bilgi için bkz . Microsoft Entra Id kullanarak yönetilen kimlik isteğini yetkilendirme.

Kullanım

C# dilinde tür WebPubSubEventRequest tanınan bağlama parametresidir, rest parametreleri parametre adına bağlıdır. Kullanılabilir parametreler ve türler için aşağıdaki tabloyu denetleyin.

JavaScript gibi zayıf türde bir dilde, name aşağıdaki eşleme tablosuyla ilgili tetikleyici nesnesini bağlamak için kullanılır function.json . Tetikleyici girişi için bağlama nesnesi olarak ayarlandığında dataType iletiyi buna function.json göre dönüştürmeye de dikkat namedata edin. Tüm parametreler' den context.bindingData.<BindingName> okunabilir ve JObject dönüştürülür.

Bağlama Adı Bağlama Türü Açıklama Özellikler
istek WebPubSubEventRequest Yukarı akış isteğini açıklar Özellik, türetilmiş sınıflar ConnectEventRequest, , MqttConnectEventRequest, ConnectedEventRequestMqttConnectedEventRequest, UserEventRequest, DisconnectedEventRequestve MqttDisconnectedEventRequestdahil olmak üzere farklı olay türlerine göre farklılık gösterir.
bağlantı bağlamı WebPubSubConnectionContext Ortak istek bilgileri EtkinlikTürü, EtkinlikAdı, Hub, BağlantıID, KullanıcıID, Başlıklar, Kaynak, İmza, Durumlar
veriler BinaryData,string,,Streambyte[] Kullanıcı message olayında istemciden ileti verileri isteme -
Datatype WebPubSubDataType , destekleyen binarydataType textiletisi istemejson -
talepler IDictionary<string, string[]> Sistem connect isteğindeki Kullanıcı Talepleri -
sorgu IDictionary<string, string[]> Sistem connect isteğinde kullanıcı sorgusu -
altprotocols IList<string> Sistem connect isteğinde kullanılabilir alt protokoller -
istemci sertifikaları IList<ClientCertificate> Sistem connect isteğindeki istemcilerden sertifika parmak izi listesi -
sebep string Sistem disconnected isteğindeki neden -

Önemli

C# dilinde, işlevin doğru şekilde bağlanması için desteklenen birden çok parametrenin ilkine, yani request varsayılan data tür dışında bir parametrenin BinaryData.

Yanıt döndür

WebPubSubTrigger ve kullanıcı olayının zaman uyumlu olayları için müşteri tarafından döndürülen yanıta connect saygı gösterir. Yalnızca eşleşen yanıt hizmete geri gönderilir, aksi takdirde yoksayılır. Ayrıca return nesnesi, WebPubSubTrigger bağlantının SetState() meta verilerini yönetmek için kullanıcıları ClearStates() destekler. Uzantı, dönüş değerinden elde ettiğiniz sonuçları istekten WebPubSubConnectionContext.Statesalınan özgün değerlerle birleştirir. Mevcut anahtardaki değer üzerine yazılır ve yeni anahtardaki değer eklenir.

Dönüş Türü Açıklama Özellikler
ConnectEventResponse Olay yanıtı connect Gruplar, Roller, UserId, Altprotocol
UserEventResponse Kullanıcı olayı için yanıt VeriTürü, Veri
EventErrorResponse Eşitleme olayı için hata yanıtı Kod, HataMesajı
*WebPubSubEventResponse Belirsiz dönüş durumlarında kullanılan desteklenenlerin temel yanıt türü -