Questo è un progetto di front-end che utilizza socket.io per tutte le comunicazioni con il server. Ciò consente una spinta che è buona, ma recentemente ci è stato chiesto di fornire un pulsante di pausa. Il pulsante di pausa è inteso all'arresto dei dati dalla modifica sull'interfaccia utente se l'utente non desidera che lo faccia automaticamente.
Al momento abbiamo una classe che avvolge il web-socket e fornisce un wrapping molto minimale di socket.io.
Il problema è che non possiamo semplicemente spegnere il socket. Le interazioni degli utenti devono continuare a funzionare e le diverse visualizzazioni hanno specifiche diverse su quali messaggi devono essere ignorati.
In fin dei conti è un grande booleano globale, non importa come lo si taglia, e questo fa schifo. Preferirei che non fosse davvero una variabile globale, quindi ecco l'idea che ho avuto finora:
Narsty Global
// A non pausable listener
socket.on('myEvent', function(data){
// do thing
});
// A pausable listener
socket.on('myPausable', function(data){
if(window.isPaused){ return false; }
// do thing
});
Valore passato
// A non pausable listener
socket.on('myEvent', function(data){
// do thing
});
// A pausable listener
socket.on('myPausable', function(data, isPaused){
if(isPaused){ return false; }
// do thing
});
Metodo avvolto
// A non pausable listener
socket.on('myEvent', function(data){
// do thing
});
// A pausable listener
socket.onLive('myPausable', function(data){
// do thing
});
Classe separata
// A non pausable listener
socket.on('myEvent', function(data){
// do thing
});
// A pausable listener
liveData.on('myPausable', function(data){
// do thing
});
Attualmente c'è un sacco di messaggi che avvengono sul socket, e ci sarà solo un interruttore "PAUSE" nell'interfaccia utente, quindi questo deve essere fatto con attenzione. Consigli e buone pratiche sono apprezzati. Grazie gente.