Per quanto tempo Websockets dovrebbe mantenere la connessione

6

Ho creato un servizio generico per il resto che in aggiunta consuma un websocket per risorsa il mio codice websocket sembra così:

initialize(hubSubRoute: string): void{
    const accessToken = this.authManager.getRawAccessToken();

    let hubUrl = environment.baseUrl + hubSubRoute;
    if (accessToken) {
        hubUrl += '?' + this.hubAuthorizationQueryParameter +'=' + accessToken;
    }

    this._hubConnection = new HubConnectionBuilder()
                                .withUrl(hubUrl)
                                .build();
}

startConnection(): void {

    this._hubConnection.start()
        .then(() => {
            console.log('Hub connection started');
            this.connectionEstablished.emit(true);
        })
        .catch(err => {
            console.log('Error while establishing connection');
        });
}

So che le web socket sono una connessione longeva. Mi sto chiedendo le migliori pratiche per mantenere la loro longevità. Ad esempio, ho un servizio di messaggi. Che aprirà un websocket e invierà un messaggio non appena arriveranno, in, comunque

Se l'utente si allontana da quella conversazione, dovrei lasciare aperta la presa di rete?

O dovrei chiuderlo e quando l'utente torna a quella conversazione, ottieni i messaggi mancanti e reinizializza la presa?

    
posta johnny 5 26.06.2018 - 04:15
fonte

1 risposta

3

Creare una nuova connessione è costoso in termini di risorse. L'obiettivo di WebSocket è specificamente quello di evitare di creare connessioni a intervalli regolari, come nel caso di lunghi polling.

Tuttavia, mantenere una connessione aperta è anche costoso: se ne hai troppi, potresti non essere in grado di aprirne di nuovi (senza hardware di rete aggiuntivo, ecc.)

Quindi:

  • Se sei abbastanza sicuro che l'uso non sarà interessato dagli eventi per un lungo periodo, chiudi la connessione.

  • Se stai esaurendo le connessioni, chiudi quelle che sono inattive.

  • In altri casi, mantienilo aperto, il che renderebbe anche il tuo codice più semplice.

risposta data 29.06.2018 - 14:06
fonte

Leggi altre domande sui tag