Ho sviluppato un server di chat utilizzando websocket in cowboy, ma voglio sapere se il messaggio inviato dal server al client è riuscito. Come posso sapere?Come posso sapere se il messaggio inviato da Websocket ha successo oppure no
risposta
Websocket è uno strato di astrazione piuttosto sottile sopra un socket TCP convenzionale. Dopo l'iniziale stretta di mano la differenza è minima. Quindi, la domanda è: come faccio a sapere se un pezzetto di dati è stato ricevuto dal peer remoto? La risposta breve: solo se il peer lo riconosce esplicitamente tramite il protocollo a livello di applicazione. Il client remoto invierà pacchetti TCP ACK per ogni pacchetto di dati che verrà inviato, ma questo fatto è ben nascosto dall'applicazione per buoni motivi. La ricezione del pacchetto ACK significa solo che lo stack TCP remoto lo ha gestito, ma non dice nulla su come (e se) l'applicazione client lo ha elaborato.
Aggiungere un tipo di messaggio "conferma ricezione" speciale al protocollo chat. Includere un numero progressivo monotonicamente crescente in tutti i messaggi in uscita e includere il SN del messaggio ricevuto nel messaggio ACK per sapere esattamente quanti dati il client ha già elaborato.
Dovresti tornare e scegliere una risposta per la tua domanda – thedouglenz