2017-07-23 2 views
0

Ich habe mit Laravel + Pusher begonnen und die Demo-Anwendung von Pusher blog verwendet. Hier wird in der source code beschrieben, wie die Benutzerverbindungen gezählt werden. Aber ich habe Probleme damit, die Sitzungen nach Benutzern als zusätzlichen Wert zu zählen.Laravel pusher.js - Benutzer-Sitzungen zählen

Beispiel: Jane und John verbinde ich 2 erhalten für usersEditing.length. Wenn Jane verbindet von zwei Browser bekomme ich 1 für usersEditing.length.

<script> 
export default { 
    props: [ 
     'note', 
    ], 

    data() { 
     return { 
      title: this.note.title, 
      body: this.note.body, 
      usersEditing: [], 
      status: '' 
     } 
    }, 

    mounted() { 
     Echo.join(`note.${this.note.slug}`) 
      .here(users => { 
       this.usersEditing = users; 
      }) 
      .joining(user => { 
       this.usersEditing.push(user); 
      }) 
      .leaving(user => { 
       this.usersEditing = this.usersEditing.filter(u => u != user); 
      }) 
      .listenForWhisper('editing', (e) => { 
       this.title = e.title; 
       this.body = e.body; 
      }) 
      .listenForWhisper('saved', (e) => { 
       this.status = e.status; 

       // clear is status after 1s 
       setTimeout(() => { 
        this.status = ''; 
       }, 1000); 
      }); 
    }, 

    methods: { 
     editingNote() { 
      let channel = Echo.join(`note.${this.note.slug}`); 

      // show changes after 1s 
      setTimeout(() => { 
       channel.whisper('editing', { 
        title: this.title, 
        body: this.body 
       }); 
      }, 1000); 
     }, 

     updateNote() { 
      let note = { 
       title: this.title, 
       body: this.body 
      }; 

      // persist to database 
      axios.patch(`/edit/${this.note.slug}`, note) 
       .then(response => { 
        // show saved status 
        this.status = response.data; 

        // clear is status after 1s 
        setTimeout(() => { 
         this.status = ''; 
        }, 1000); 

        // show saved status to others 
        Echo.join(`note.${this.note.slug}`) 
         .whisper('saved', { 
          status: response.data 
         }); 
       }); 
     } 
    } 
} 

Ich brauche eine zusätzliche Wert Sitzungen für jeden Benutzer. So kann ich die Anzahl der Verbindungen nach Benutzer und insgesamt anzeigen.

Kann jemand mir hier helfen.

Thx im Voraus, Dave

Antwort

0

Jane und John verbinde ich 2 für usersEditing.length bekommen. Wenn Jane von zwei Browsern verbindet, erhalte ich 1 für usersEditing.length.

Dies liegt daran, dass die Anwesenheitskanäle von Pusher auf eindeutigen Benutzern und nicht auf Verbindungen basieren. Wenn Sie die Gesamtzahl der Verbindungen oder Sitzungen beibehalten möchten, müssen Sie selbst etwas implementieren.

Es gibt eine Reihe von Möglichkeiten, wie Sie dies tun können. Die /channels endpoint in der Pusher http Api ermöglicht es Ihnen, subscription_count sowie user_count abrufen.

Sie könnten einen Endpunkt auf Ihrem Server konfigurieren, der diese Daten von der Pusher-API abruft und eine Aktualisierung an einen Kanal sendet, der die subscription_count enthält. Wenn Sie diesen Endpunkt bei jedem erfolgreichen Abonnement von Ihrem Client aus aufrufen. Dann könnten Sie in jedem Client eine Abonnentenanzahl verwalten.

var channel = pusher.subscribe('presence-meeting-11'); 

channel.bind('pusher:subscription_succeeded', function(members) { 
    // call your new endpoint 
}); 
Verwandte Themen