Express için Azure Web PubSub CloudEvents işleyicileri
Azure Web PubSub hizmeti , geliştiricilerin gerçek zamanlı özellikler ve yayımla-abone ol düzeniyle kolayca web uygulamaları oluşturmalarına yardımcı olan, Azure tarafından yönetilen bir hizmettir. Sunucu ve istemciler arasında veya istemciler arasında gerçek zamanlı yayımlama-abone olma mesajlaşması gerektiren tüm senaryolar Azure Web PubSub hizmetini kullanabilir. Genellikle sunucudan yoklama veya HTTP istekleri gönderme gerektiren geleneksel gerçek zamanlı özellikler, Azure Web PubSub hizmetini de kullanabilir.
WebSocket bağlantısı bağlandığında, Web PubSub hizmeti bağlantı yaşam döngüsünü ve iletileri CloudEvents biçiminde olaylara dönüştürür. Bu kitaplık, aşağıdaki diyagramda gösterildiği gibi WebSocket bağlantısının yaşam döngüsünü ve iletilerini temsil eden olayları işlemek için hızlı bir ara yazılım sağlar:
Burada kullanılan terimlerle ilgili ayrıntılar Temel kavramlar bölümünde açıklanmıştır.
Kaynak kodu | Paket (NPM) | API başvuru belgeleri | Ürün belgeleri | Örnekleri
Başlarken
Şu anda desteklenen ortamlar
- Node.jsLTS sürümleri
- Express sürüm 4.x.x veya üzeri
Önkoşullar
- Bir Azure aboneliği.
- Mevcut bir Azure Web PubSub uç noktası.
1. Paketi yükleyin @azure/web-pubsub-express
npm install @azure/web-pubsub-express
2. Bir WebPubSubEventHandler
const express = require("express");
const { WebPubSubEventHandler } = require("@azure/web-pubsub-express");
const handler = new WebPubSubEventHandler("chat");
const app = express();
app.use(handler.getMiddleware());
app.listen(3000, () =>
console.log(`Azure WebPubSub Upstream ready at http://localhost:3000${handler.path}`)
);
Önemli kavramlar
Bağlantı
İstemci veya istemci bağlantısı olarak da bilinen bağlantı, Web PubSub hizmetine bağlı tek bir WebSocket bağlantısını temsil eder. Başarıyla bağlanıldığında, Web PubSub hizmeti tarafından bu bağlantıya benzersiz bir bağlantı kimliği atanır.
Hub
Hub, bir dizi istemci bağlantısı için mantıksal bir kavramdır. Genellikle sohbet hub'ı veya bildirim hub'ı gibi tek bir amaç için tek bir hub kullanırsınız. bir istemci bağlantısı oluşturulduğunda bir hub'a bağlanır ve kullanım ömrü boyunca bu hub'a aittir. Farklı uygulamalar, farklı hub adlarını kullanarak bir Azure Web PubSub hizmetini paylaşabilir.
Grup
Grup, hub'a yönelik bağlantıların bir alt kümesidir. bir gruba istemci bağlantısı ekleyebilir veya istemci bağlantısını istediğiniz zaman gruptan kaldırabilirsiniz. Örneğin, bir istemci bir sohbet odasına katıldığında veya bir istemci sohbet odasından ayrıldığında, bu sohbet odası bir grup olarak kabul edilebilir. bir istemci birden çok gruba katılabilir ve bir grup birden çok istemci içerebilir.
Kullanıcı
Web PubSub bağlantıları tek bir kullanıcıya ait olabilir. Bir kullanıcının birden çok bağlantısı olabilir, örneğin tek bir kullanıcı birden çok cihaz veya birden çok tarayıcı sekmesi arasında bağlandığında.
İstemci Olayları
Olaylar, istemci bağlantısının yaşam döngüsü sırasında oluşturulur. Örneğin, basit bir WebSocket istemci bağlantısı hizmete bağlanmaya çalıştığında bir connect
olay, hizmete başarıyla bağlandığında bir connected
olay, hizmete ileti gönderdiğinde bir message
olay ve hizmetle bağlantısı kesildiğinde bir disconnected
olay oluşturur.
Olay İşleyicisi
Olay işleyicisi, istemci olaylarını işleme mantığını içerir. Olay işleyicisinin önceden portal veya Azure CLI aracılığıyla hizmete kaydedilmesi ve yapılandırılması gerekir. Olay işleyicisi mantığını barındıracak yer genellikle sunucu tarafı olarak kabul edilir.
Örnekler
İsteği işleme connect
ve atama <userId>
const express = require("express");
const { WebPubSubEventHandler } = require("@azure/web-pubsub-express");
const handler = new WebPubSubEventHandler("chat", {
handleConnect: (req, res) => {
// auth the connection and set the userId of the connection
res.success({
userId: "<userId>"
});
},
allowedEndpoints: ["https://<yourAllowedService>.webpubsub.azure.com"]
});
const app = express();
app.use(handler.getMiddleware());
app.listen(3000, () =>
console.log(`Azure WebPubSub Upstream ready at http://localhost:3000${handler.path}`)
);
Yalnızca belirtilen uç noktalara izin ver
const express = require("express");
const { WebPubSubEventHandler } = require("@azure/web-pubsub-express");
const handler = new WebPubSubEventHandler("chat", {
allowedEndpoints: [
"https://<yourAllowedService1>.webpubsub.azure.com",
"https://<yourAllowedService2>.webpubsub.azure.com"
]
});
const app = express();
app.use(handler.getMiddleware());
app.listen(3000, () =>
console.log(`Azure WebPubSub Upstream ready at http://localhost:3000${handler.path}`)
);
Özel olay işleyici yolunu ayarlama
const express = require("express");
const { WebPubSubEventHandler } = require("@azure/web-pubsub-express");
const handler = new WebPubSubEventHandler("chat", {
path: "customPath1"
});
const app = express();
app.use(handler.getMiddleware());
app.listen(3000, () =>
// Azure WebPubSub Upstream ready at http://localhost:3000/customPath1
console.log(`Azure WebPubSub Upstream ready at http://localhost:3000${handler.path}`)
);
Bağlantı durumunu ayarlama ve okuma
const express = require("express");
const { WebPubSubEventHandler } = require("@azure/web-pubsub-express");
const handler = new WebPubSubEventHandler("chat", {
handleConnect(req, res) {
// You can set the state for the connection, it lasts throughout the lifetime of the connection
res.setState("calledTime", 1);
res.success();
},
handleUserEvent(req, res) {
var calledTime = req.context.states.calledTime++;
console.log(calledTime);
// You can also set the state here
res.setState("calledTime", calledTime);
res.success();
}
});
const app = express();
app.use(handler.getMiddleware());
app.listen(3000, () =>
console.log(`Azure WebPubSub Upstream ready at http://localhost:3000${handler.path}`)
);
Sorun giderme
Günlükleri etkinleştirme
Bu kitaplığı kullanırken hata ayıklama günlüklerini almak için aşağıdaki ortam değişkenini ayarlayabilirsiniz.
- SignalR istemci kitaplığından hata ayıklama günlüklerini alma
export AZURE_LOG_LEVEL=verbose
Günlükleri etkinleştirme hakkında daha ayrıntılı yönergeler için @azure/günlükçü paketi belgelerine bakabilirsiniz.
Canlı İzleme
Canlı trafiği görüntülemek için Web PubSub hizmet portalından Canlı İzleme'yi kullanın.
Sonraki adımlar
Bu kitaplığın nasıl kullanılacağına ilişkin ayrıntılı örnekler için lütfen samples dizinine göz atın.
Katkıda bulunma
Bu kitaplığa katkıda bulunmak isterseniz, kodu derleme ve test etme hakkında daha fazla bilgi edinmek için lütfen katkıda bulunma kılavuzunu okuyun.
İlgili projeler
Azure SDK for JavaScript
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin