Inizia con Pusher eventi client

In questa serie, abbiamo imparato a conoscere i canali di Pusher, una piattaforma che ti consente di offrire ai tuoi utenti l'esperienza in tempo reale che desiderano. 

In questa serie, abbiamo esaminato rigorosamente eventi del server, eventi che hanno avuto origine sul server, ma abbiamo anche la possibilità di attivare eventi dal client. Questi sono chiamati eventi client e forniscono un servizio diverso rispetto agli eventi del server poiché alcune azioni potrebbero non richiedere la convalida o la persistenza.


 

Gli eventi del cliente hanno diverse restrizioni a cui la tua applicazione deve aderire per poterle utilizzare. I più notevoli sono:

  • Gli eventi del cliente devono essere abilitati tramite la dashboard dell'applicazione Canali.
  • Gli eventi client possono essere emessi solo su canali privati ​​e di presenza.
  • Non vengono consegnati al cliente che avvia l'evento.
  • Sono limitati a non più di dieci messaggi al secondo per client.

Attivazione degli eventi client

Analizzeremo un esempio di eventi client aggiungendo un link alla nostra app di chat privata che invia un allarme a tutti i client connessi. Gli eventi client vengono attivati ​​dall'oggetto restituito dalla libreria Pusher sottoscrivi() metodo. Usiamo questo metodo all'interno del ChannelsChat Componente Vue.js con il seguente codice:

lascia channel = pusher.subscribe ('private-chat');

L'attivazione di un evento client è molto simile all'attivazione di un evento del server. Usate channel.trigger () per avviare l'evento e passare il nome dell'evento e i dati dell'evento ad esso, in questo modo:

channel.trigger ('client-send-alarm', message: 'Alarm!');

I nomi degli eventi del cliente devono cominciare con cliente-, come mostrato in questo codice. Il resto del nome dipende interamente da te. I dati dell'evento non sono altro che un normale oggetto JavaScript che contiene le proprietà (e i loro valori) che si desidera inviare con l'evento.

Modifica l'applicazione di chat

L'applicazione di chat canale l'oggetto risiede all'interno del ChannelsChat Componente Vue.js: è qui che creiamo l'oggetto e impostiamo il listener per il invia messaggio evento. Possiamo ristrutturare questo componente in modo che fornisca un meccanismo per l'attivazione degli eventi client.

La prima cosa che dobbiamo fare è archiviare la nostra canale oggetti come dati di istanza in modo da poter fare riferimento a tutto il componente. Lo faremo aggiungendo a canale proprietà al nostro componente, come questo:

data () return messages: [], channel: null

Quindi cambieremo il creato() gancio in modo che conserviamo il nostro canale oggetto nel nuovo canale proprietà invece del canale variabile.

// lascia channel = pusher.subscribe ('private-chat'); // vecchio codice this.channel = pusher.subscribe ('private-chat');

Ricorda solo che questo cambiamento ci impone di anteporre gli usi precedenti di canale con Questo.

Attivazione di un evento client

Ora aggiungiamo un metodo che attiverà un evento client. Chiamiamolo trigger (), e il suo codice sarà simile al seguente:

metodi: trigger (eventName, message) this.channel.trigger (eventName, message); 

Accetta il nome dell'evento e il messaggio da includere nell'evento e li trasmette this.channel.trigger (), innescando così l'evento del cliente.

L'utente interagisce principalmente con MessageSend componente perché contiene l'interfaccia utente per l'immissione e l'invio di messaggi. Quindi passeremo il trigger () metodo come prop a MessageSend, come questo:

Ascoltando l'evento del cliente

L'ultima cosa che dobbiamo fare in questo componente è ascoltare il client-send-allarme evento. Ascoltare eventi client è quasi identico all'ascolto di eventi server, l'unica differenza sono i dati che passiamo a bind () metodo. Aggiungere il seguente come l'ultima riga del creato() gancio:

this.channel.bind ('client-send-alarm', (data) => alert (data.message));

Per questo evento, non inseriamo il messaggio fornito nella schermata della chat. Invece, semplicemente visualizziamo il messaggio fornito in una casella di avviso.

Cablare l'interfaccia utente 

Nel MessageSend componente, aggiungiamo prima il puntello del grilletto al componente.

oggetti di scena: ['trigger']

Aggiungiamo quindi il nuovo link di allarme dopo il Inviare pulsante.

Allarme!

Il collegamento clic l'evento è legato al sendAlarm () metodo, che aggiungeremo al componente metodi dichiarazione. Ecco il codice molto semplice di questo metodo:

metodi: // sendMessage () qui sendAlarm () this.trigger ('client-send-alarm', 'Alarm!'); 

Il sendAlarm () il metodo chiama semplicemente trigger (), passaggio client-send-allarme come nome dell'evento e Allarme! come il messaggio.

Test delle modifiche

Per vedere i risultati delle nostre modifiche al codice, avrai bisogno di due client connessi all'app di chat. Anche se ciò può sembrare ovvio, c'è una buona ragione per avere due clienti aperti: il cliente che avvia l'evento non riceve l'evento.

Quindi, con due client aperti, fare clic su Allarme! link in un client, e vedrai l'evento gestito nell'altro client, come mostrato qui:

Il client a sinistra ha attivato l'evento e puoi vederlo gestito nel client a destra.

Conclusione

Inutile dire che la maggior parte degli eventi utilizzati nelle applicazioni basate su Canali sono eventi del server, ma ci sono alcuni casi in cui è possibile che si desideri avviare un evento che non richiede la convalida o la persistenza lato server. Con Canali di Pusher, è incredibilmente facile da attivare e ascoltare gli eventi dei clienti!