2013-05-19 2 views
5

Ich habe 40 Kategorien und jede Kategorie hat 10-100 Unterkategorien. Standardmäßig hört der Benutzer alle Kategorien und Unterkategorien ab. Ich möchte jedem Benutzer die Möglichkeit geben, aus der gesamten Kategorie oder aus einer bestimmten Unterkategorie die Bindung zu lösen. Also, jetzt, was ich habe, ist jede Kategorie ein Kanal und jede Unterkategorie ist ein Ereignis.Was ist der beste Weg, um eine Menge von Kanälen und Veranstaltungen mit Pusher zu hören

Jetzt habe ich etwas wie jeder Benutzer an 2000-3000 Ereignisse gebunden ist, und ich weiß, das ist falsch, also was ist der richtige Weg, um den Benutzer zwischen 3000 Ereignisse filtern lassen? Ist es in Ordnung, an so viele Ereignisse zu binden?

+0

Ich denke, mit Event ist ganz normal, Sie können eine Menge haben, aber es hängt von Client-Leistungen. Die Optimierung kann übrigens in der Art und Weise erfolgen, wie Ihre Ereignisse verkabelt werden. – SmasherHell

+0

@SmasherHell was meinst du mit verdrahtet? –

+0

können Sie Ereignisse nach anonymer Funktion definieren (zB: element.onclick = function() {};) oder eine Funktion definieren, die mehrere Ereignisse behandeln kann (zB: element.onclick = event_handler;) – SmasherHell

Antwort

4

Es ist wichtig zu bedenken, dass beim Abonnieren eines Kanals alle Ereignisse für den Kanal an den Client (Pusher - Clients) gesendet werden, auch wenn Sie nicht an das Ereignis gebunden sind.

Mit den oben genannten Informationen würde ich empfehlen, Kanäle zu verwenden, um Daten zu filtern. Der Overhead beim Abonnieren eines Kanals ist nicht groß. Zum Beispiel würde das Abonnieren von 40 Kanälen keine signifikante Ressourcennutzung darstellen. Sie müssen überlegen, ob die Kanäle öffentlich sind (jeder kann sich anmelden) oder private, wobei jeder Anruf zu pusher.subscribe('private-channel-x'); zu einem authentication request zu Ihrem Server führt. Es gibt eine multi-auth plugin, die das Stapeln von Authentifizierungsanforderungen ermöglicht.

Eine Lösung besteht darin, dass jeder Benutzer seinen eigenen Benachrichtigungskanal abonniert und ihnen Ereignisse für die Dinge sendet, an denen er an diesem einzelnen Kanal interessiert ist. Sie können dazu die Funktion multi publish verwenden, mit der Sie dasselbe Ereignis auf vielen Kanälen senden können. Dies kann nützlich sein, wenn Sie dasselbe Ereignis an mehrere Benutzer senden möchten. Diese Lösung ist jedoch aus Sicht der Informationsarchitektur möglicherweise nicht so elegant.

Die beste Lösung hier hängt wirklich von Ihrer Anwendung ab. Aber mit dem oben genannten haben Sie nun alle Fakten, die Ihnen die effizienteste Wahl ermöglichen.

+0

Der Link zu "Multi-Abo-Funktion" ist nicht mehr aktiv. Gibt es Neuigkeiten an dieser Front? – technoTarek

+0

@technoTarek werfen Sie einen Blick auf https://github.com/pusher/pusher-js#batching-auth-requests-aka-multi-auth – leggetter

Verwandte Themen