2013-08-17 17 views

risposta

8

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.