Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
April 18, 2024 09:40 am GMT

Mises jour du moteur d'vnements et des rcepteurs d'vnements

Nous travaillons dur pour nous assurer que tous nos SDKs se comportent de manire cohrente et fournissent aux dveloppeurs PubNub la meilleure exprience possible. Nous avons rcemment introduit un certain nombre de changements, collectivement connus comme des mises jour du "Event Engine", ainsi qu'un nouvel ensemble d'APIs "Event Listener" qui offrent un plus grand contrle sur la faon dont vous recevez les vnements PubNub.

Cet article vise expliquer ce que sont ces diffrentes mises jour ainsi qu' donner un aperu de nos nouveaux "Event Listeners".

Support SDK

Au moment de la rdaction de cet article, les dernires versions de notre SDK Java, Swift, Javascript, Kotlinet Rust Les SDK prennent en charge le nouveau moteur d'vnements et les couteurs d'vnements, et d'autres SDK seront bientt pris en charge.

Qu'est-ce qui change ?

un niveau lev, nous apportons les changements suivants nos SDK :

  • La refonte de nos API d'coute d'vnements afin que vous n'ayez plus passer un seul objet PubNub global travers toute votre application. Des quatre points de cette liste, les nouvelles API d'coute d'vnements apporteront le plus grand bnfice aux dveloppeurs PubNub, c'est pourquoi la plus grande partie de cet article leur est consacre.

  • Mise jour et harmonisation de la logique qui gre la communication avec le backend PubNub, en recevant des vnements tels que des messages ou des prsences. Il s'agit du 'moteur d'vnements'.

  • Amlioration de la gestion de l'tat de prsence, rendue possible par les amliorations apportes au "moteur d'vnements".

  • Harmonisation de notre politique de relance pour la rendre cohrente dans tous les SDK, ce qui a galement t rendu possible grce aux amliorations apportes au "moteur d'vnements".

Changement n 1 : refonte des API d'coute d'vnements

Nous amliorons nos SDK afin de fournir des couteurs d'vnements plus granulaires, vous permettant d'tendre l'entit spcifique le ou les vnements que vous souhaitez recevoir.

Qu'est-ce qu'uneentit? Une entit peut tre un "canal", un "groupe de canaux", des "mtadonnes utilisateur" ou des "mtadonnes de canal".

Qu'est-ce qu'un vnement dans ce contexte ? Il peut s'agir d'un "message", d'un "vnement de prsence", d'un "signal", d'un "vnement d'objet", d'une "action de message" ou d'un "fichier".

Ces amliorations vous permettent, entre autres, de spcifier des gestionnaires de messages distincts pour diffrents canaux, ce qui signifie que vous ne devez plus suivre l'tat global de votre application et maintenir un seul auditeur pour tous les vnements PubNub.

Au moment o j'cris ces lignes, nous sommes encore en train de dployer ces mises jour dans notre gamme de SDK. J'ai utilis JavaScript pour les exemples de code dans les sections suivantes, mais vous trouverez la fonctionnalit quivalente implmente dans chacun des SDK que j'ai lists au dbut de cet article.

Qu'est-ce qui change avec les couteurs d'vnements ?

Jusqu' rcemment, tous nos SDK contenaient un seul objet monolithique, gnralement appel PubNub, au centre du SDK, fournissant des points d'entre pour toutes les interactions possibles, par exemple, s'abonner, se dsabonner, publier, etc. Si vous voulez effectuer l'une de ces actions, comme s'abonner un canal spcifique dans un cran spcifique de votre application, vous devez passer une rfrence cet objet PubNub global dans toute votre application.

En plus d'initier des actions, l'objet PubNub permet galement l'utilisateur d'couter les mises jour de statut (lies principalement l'tat de la connexion d'abonnement) et les vnements en temps rel provenant du rseau PN, tels que les messages, les signaux, les vnements de prsence, les objets, les fichiers et les actions par le biais des mthodes addListener() et removeListener( ). Ce code addListener() devient gnralement gonfl en raison du grand nombre de blocs de condition pour grer tous les types d'vnements et de sources - regardez simplement le code de l'une de nos applications de dmonstration pour s'en convaincre( !)

En outre, il est important de comprendre que tout se passe dans la porte globale de l'objet PubNub, c'est--dire :

  • La liste d'abonnement aucanal/groupe de canaux est globale (c'est--dire qu'elle est lie l'objet PubNub ) et la liste globale est affecte par les appels d'abonnement/dsabonnement.

  • Les rcepteurs d'tat et d'vnements sont globaux et mettent des vnements lis tous lescanaux/groupes de canaux actuellement souscrits.

Par consquent, si vous avez plusieurs crans dans votre application, chacun ncessitant une connexion diffrents canaux PubNub, vous devez suivre manuellement les connexions requises au fur et mesure que l'utilisateur navigue dans votre application. Ce processus est sujet des erreurs lorsque vous vous dsabonnez de canaux qui ne sont plus requis.

Nouvelle architecture pour les couteurs d'vnements

La nouvelle architecture, actuellement dploye dans notre gamme de SDK, introduit de nouvelles faons, plus restreintes, de traiter les abonnements et d'couter les vnements. Ces SDK mis jour sont actuellement rtrocompatibles, bien que la dprciation soit aborde plus loin dans cet article. La nouvelle architecture offre des mthodes supplmentaires pour crer ce que nous appelons des "entits".entit' :

  • Canaux

  • Groupes de canaux

  • Mtadonnes de l'utilisateur

  • Mtadonnes des canaux

Ces entits contiennent une mthode subscription() qui renvoie un objet Subscription. Par exemple, notre API JavaScript peut tre appele comme suit :

const channel = pubnub.channel('channel_1');const channelSubscription = channel.subscription({receivePresenceEvents: true});channelSubscription.subscribe()channelSubscription.onMessage = function (message) {    console.log(message);}channelSubscription.onPresence = function (presenceEvent) {    console.log(presenceEvent);}

Vous pouvez considrer l'objet Subscription renvoy comme un client PubNub porte plus troite ; il contient des mthodes subscribe() et unsubscribe( ) pour activer ou arrter l'abonnement son entit parente. Il existe deux faons de recevoir des vnements sur un abonnement:

1. Les gestionnaires on[Event], comme le montre l'extrait de code ci-dessus pour onMessage et onPresence. Il existe d'autres gestionnaires pour les signaux, les objets, les fichiers et les actions de message.

2. La mthode addListener reoit tous les vnements dans une seule fonction et cette syntaxe vous sera plus familire si vous passez de nos API prcdentes. Le code quivalent en JavaScript pour couter les messages et les vnements de prsence l'aide de la mthode addListener se prsente comme suit :

channelSubscription.addListener({    // Messages    message: (message) => {console.log(message)},    // Presence event    presence: (presenceEvent) => {console.log(presenceEvent)},    // Other event handlers for signals, objects, files, message actions});

Quels sont les avantages des nouveaux couteurs d'vnements ?

Vous pouvez crer plusieurs objets Subscription pour n'importe quelle entit (par exemple, un canal), et tous ces objets Subscription seront indpendants les uns des autres, mme ceux crs pour la mme entit. Cela signifie que chaque Subscription peut tre activ(subscribe()) ou arrt(unsubscribe()) sans affecter les autres Subscriptions et permet une structuration beaucoup plus souple des applications clientes, par rapport la gestion de l'tat global travers l'objet unique PubNub.

Remarque: la cration de plusieurs objets Subscription est peu coteuse en termes de ressources puisque le SDK se chargera de multiplexer tous ces abonnements sur une seule connexion serveur, contrairement l'"ancienne" approche, o la cration de plusieurs objets PubNub ncessitait une connexion serveur distincte pour chacun d'entre eux.

Enfin, les SDK prendront toujours en charge une mthode globale addListener() sur l'objet PubNub, mais celle-ci ne doit tre utilise que pour couter les vnements suivants vnements d'tattels que Connect ou Dconnect.

pubnub.addListener({status: (s) => {console.log('Status', s.category) }});

Lorsque l'utilisateur lance l'application pour la premire fois, il voit les valeurs de quelques actions populaires, mais lorsqu'il se connecte, il peut slectionner ses symboles boursiers prfrs et reoit galement les prix actuels de ces derniers.

Pour implmenter cette application dans PubNub, vous pouvez choisir d'avoir deux canaux, un canal "commonStock" et un canal "favoriteStock".

Examinons maintenant le parcours de l'utilisateur et la manire dont vous pouvez dterminer les canaux sur lesquels couter les mises jour des actions :

Avec l'architecture prcdente pour les abonnements aux canaux, qui dpendait d'un objet global

1. L'utilisateur lance l'application.

L'application s'abonne au canal "commonStock".

2. L'utilisateur se connecte

L'application s'abonne au canal "favoriteStock".

L'application est maintenant abonne deux canaux : "commonStock" et "favoriteStock".

3. L'utilisateur se dconnecte

L'application doit maintenant dterminer de quels canaux elle doit se dsabonner, en l'occurrence "favoriteStock". L'application n'est plus abonne qu' un seul canal : "commonStock"

Bien que cet exemple soit trivial, vous pouvez constater qu' mesure que le nombre d'crans et de canaux augmente, il devient de plus en plus compliqu de grer les applications de grande taille. Vous devez disposer d'un composant dans votre application qui ait une vue globale de la liste des canaux auxquels vous tes abonn et qui comprenne ce qui doit arriver cette liste au fur et mesure que les utilisateurs naviguent dans votre application.

Voyons maintenant le mme scnario avec les nouveaux couteurs d'vnements.

1. L'utilisateur lance l'application.

L'application s'abonne au canal "commonStock", comme prcdemment.

2. L'utilisateur se connecte

Puisque nous voulons recevoir les cours des actions communes et des actions favorites, nous crons deux abonnements pour l'utilisateur connect. Nous n'avons pas besoin de savoir au pralable que l'utilisateur tait abonn au canal "commonStock".

stocksSub2 = PN.channel(commonStock).subscription()stocksSub2.subscribe()favoritesSub = PN.channel(favoriteStock).subscription()favoritesSub.subscribe()

L'application est maintenant abonne deux canaux : "Notez que mme si l'utilisateur est abonn la fois stocksSub1 et stocksSub2, cela n'utilise pas de ressources supplmentaires et il ne recevra pas de messages en double.

3. L'utilisateur se dconnecte

Dans le cadre de la logique de dconnexion de l'utilisateur, nous nous dsabonnons des canaux "commonStock" et "favoriteStock". Nous n'avons pas nous proccuper des canaux auxquels un utilisateur dconnect a accs, car cela n'entre pas dans notre champ d'application.

stocksSub2.unsubscribe()favoritesSub.unsubscribe()

L'application est maintenant abonne un seul canal : "commonStockPrices", en raison de l'abonnement existant stocksSub1.

La principale diffrence rside dans le fait que les diffrents crans de l'application ne doivent s'occuper que de ce qui se passe dans leur propre champ d'application, ce qui signifie que vous n'avez pas maintenir une vue globale pour savoir si "commonStock" doit toujours tre abonn ; les nouveaux gestionnaires d'vnements s'en chargent pour vous.

Combiner des abonnements dans un ensemble d'abonnements

Les exemples prcdents n'ont pris en compte que des canaux individuels, mais l'objet Abonnement n'est pas limit un seul canal ou groupe de canaux, qui peuvent tre combins en un ensemble d'abonnements pour grer les vnements de tous ces canaux ensemble.

Pour prolonger l'exemple prcdent, nous aurions pu grer les deux canaux de connexion avec un seul SubscriptionSet, avec un seul gestionnaire d'vnements.

subscriptionSet = pubnub.subscriptionSet({channels: ['commonStock', 'favoriteStock]})subscriptionSet.onMessage = function (message) {console.log(message.channel)}subscriptionSet.subscribe()

Notez que si l'abonnement a t cr partir de l'entit entitle SubscriptionSet est appel sur l'objet global PubNub.

Quand l'abonnement l'chelle PubNub sera-t-il obsolte ?

Comme nous introduisons la nouvelle architecture pour les couteurs d'vnements, les API prcdentes sont obsoltes sur la base d'un SDK particulier. Javascript par exemple, et remarquez que l'"ancienne" API pubnub.subscribe() et pubnub.unsubscribe() ont t marques comme obsoltes. Nous souhaitons que le processus de mise niveau soit le moins frictionnel possible pour nos dveloppeurs, c'est pourquoi chacun de nos SDK prend en charge une longue priode de fin de vie (EOL). Veuillez consulter la priode EOL documente pour votre SDK spcifique dans la documentation, qui se trouve vers le bas de la liste des fonctionnalits du SDK. vers le bas de la liste des fonctionnalits du SDK.

Changement n 2 : Mises jour de notre moteur d'vnements

Au cur de nos SDK, il y a une boucle logique pour grer la connexion avec notre infrastructure PubNub afin de recevoir des vnements tels que des messages ou des mises jour de prsence - c'est ce que nous appelons notre moteur d'vnements. En gnral, ce n'est pas quelque chose que vous configurez lorsque vous utilisez nos SDK et cela fonctionnera tout simplement pour 99,9% de nos clients.9 % de nos clients, mais comme nous avons dvelopp notre famille de SDK au fil des ans (comme pour tout projet d'ingnierie logicielle), vous accumulez de la dette technique. Alors que tous nos SDK fournissent une exprience cohrente l'utilisateur, en coulisses, les diffrents SDK ont des bizarreries d'implmentation dans le moteur d'vnements qui rendent difficile pour nous d'ajouter de nouvelles fonctionnalits et de traquer les rares cas de contournement.

Nous mettons jour le moteur d'vnements dans chacun de nos SDK afin qu'ils grent tous les transitions d'tat de manire prvisible et cohrente ; cela nous permettra d'apporter des amliorations qui fourniront des fonctionnalits supplmentaires tout en rduisant le nombre de cas limites que nos clients rencontreront.

Quels changements de code sont ncessaires pour le nouveau moteur d'vnements ?

Une nouvelle option de configuration a t ajoute la configuration du SDK, enableEventEngine, qui, selon la documentation, "utilisera les flux de travail normaliss pour l'abonnement et la prsence", ce qui reflte nos efforts pour normaliser la mise en uvre du moteur dans l'ensemble de nos SDK dcrits dans la section prcdente.

Il s'agit d'un changement irrversible, ce qui signifie que si vous attribuez la valeur "true" cette option, vous n'aurez pas apporter de modifications votre application , moins qu'il n'en soit stipul autrement. Le seul exemple document jusqu' prsent est l'vnement d'tat Kotlin Les vnements d'tat pour Subscribe ont t mis jour pour les rendre cohrents avec d'autres SDK (dtaills dans notre correspondance avec notre flux de travail de connexion gnrique). workflow de connexion gnriqueCes statuts mis jour sont utiliss en Kotlin par l'couteur d'tat de connexion auditeur d'tat de connexionVeuillez consulter la documentation du SDK pour connatre les exceptions supplmentaires et les changements requis lors de l'activation du nouveau moteur d'vnements.

Changement n 3 : Mise jour de notre gestion de l'tat de prsence

L'tat de prsence fait rfrence l'tat de l'utilisateur tat personnalis de l'utilisateur qui peut tre dfini mais qui ne persistera que tant que l'utilisateur sera abonn au canal. Les cas d'utilisation typiques de l'tat de prsence comprennent le maintien du score du joueur, de l'tat du jeu ou de l'emplacement. Si vous tes familier avec notre dmo de dmo de collaboration (tableau blanc)cette application utilise l'tat de prsence pour enregistrer et mettre jour la position du curseur de l'utilisateur.

Nous avons identifi quelques cas particuliers avec des clients spcifiques qui bnficieraient d'un traitement diffrent des mises jour de l'tat de prsence. Cependant, il s'agit d'une question de cas par cas, et la plupart des clients peuvent continuer utiliser la logique existante de l'tat de prsence sans changement. Plus prcisment, la logique "existante" de l'tat de prsence est la suivante setPresenceState, getPresenceStateet l'coute de la commandechangement d'tat' (changement d'tat).

Quelles modifications du code sont ncessaires pour la nouvelle gestion de l'tat de prsence ?

Une nouvelle option de configuration a t ajoute la configuration du SDK, maintainPresenceState. La plupart des clients, sauf avis contraire, devraient conserver la valeur par dfaut de ce paramtre, 'true'. La dfinition de cette valeur 'true' conservera le comportement actuel, tel que dcrit ci-dessus.

Changement n 4 : Harmonisation de notre politique de ressai du SDK

En cas de dconnexion d'un client de PubNub, la politique de reconnexion automatique a toujours t incohrente entre nos diffrents SDK.

La plupart de nos SDK offrent un moyen de configurer la faon de rcuprer un problme de connectivit, le plus souvent en exposant une configuration de "politique de ressai" et en permettant au dveloppeur de choisir entre "aucun", "linaire" ou "exponentiel". Cependant, les valeurs de temporisation associes chaque politique sont codes en dur et spcifiques au SDK.

La politique de ressai est en train d'tre amliore et rendue plus personnalisable, comme document sur la page Politique de reconnexion de la Politique de reconnexion de la gestion des connexionsAu fur et mesure de la mise en uvre de ces changements dans nos SDK, la politique de relance sera harmonise. Vous pouvez dsormais configurer la politique de relance linaire :

  • Une politique de relance linaireavec un intervalle de temps personnalisable et un nombre maximum de tentatives configurable.

  • Politique de relance exponentielleavec un dlai minimum et maximum personnalisable, ainsi qu'un nombre maximum de tentatives.

  • Points d'extrmit exclure de la politique de ressai : par exemple, si les donnes sont sensibles au facteur temps et qu'il n'est pas utile de les ressayer, vous pouvez les exclure. Prenons l'exemple d'un vnement en direct au cours duquel un large public ragit de nombreux messages ; vous pouvez choisir d'exclure le type d'vnement "message_reaction".

Veuillez consulter la section de configuration de votre SDK pour connatre la nouvelle option globale retryConfiguration et les ventuelles limitations spcifiques au SDK.

Plus de ressources :

Les changements dcrits dans cet article, en particulier les changements apports aux couteurs d'vnements, reprsentent un changement fondamental dans la manire dont les dveloppeurs interagissent avec nos API. Cependant, nous sommes convaincus que les avantages long terme l'emportent sur la courbe d'apprentissage initiale. Nous souhaitons que votre transition vers les nouvelles API d'coute d'vnements soit aussi facile que possible, alors si vous avez besoin d'aide ou d'assistance, n'hsitez pas contacter notre quipe d'assistance ddie ou envoyez un courriel notre quipe charge des relations avec les dveloppeurs l'adresse [email protected].

Nous sommes galement intresss par vos commentaires. S'il y a quelque chose que nous pourrions faire ou fournir pour faciliter votre mise jour, n'hsitez pas nous le faire savoir.

Comment PubNub peut-il vous aider ?

Cet article a t publi l'origine sur PubNub.com

Notre plateforme aide les dveloppeurs construire, fournir et grer l'interactivit en temps rel pour les applications web, les applications mobiles et les appareils IoT.

La base de notre plateforme est le rseau de messagerie en temps rel le plus grand et le plus volutif de l'industrie. Avec plus de 15 points de prsence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilit de 99,999 %, vous n'aurez jamais vous soucier des pannes, des limites de concurrence ou des problmes de latence causs par les pics de trafic.

Dcouvrez PubNub

Dcouvrez le Live Tour pour comprendre les concepts essentiels de chaque application alimente par PubNub en moins de 5 minutes.

S'installer

Crez un compte PubNub pour un accs immdiat et gratuit aux cls PubNub.

Commencer

La documentation PubNub vous permettra de dmarrer, quel que soit votre cas d'utilisation ou votre SDK.


Original Link: https://dev.to/pubnub-fr/mises-a-jour-du-moteur-devenements-et-des-recepteurs-devenements-3ejm

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To