Domanda

sto facendo videochat Comet con Erlang. Io uso una sola connessione (a lungo polling) per il trasporto dei messaggi. Ma, come sapete, la connessione a lungo polling non è possibile rimanere connessi tutto il tempo. Ogni volta che un nuovo messaggio arriva o arriva il timeout, si romperà e quindi connettersi al server di nuovo. Se un messaggio viene inviato prima che la connessione ri-connesso, si tratta di un problema di mantenere l'integrità della chat.

E inoltre, se un utente apre più di una finestra con la cometa-Chat, tutti i messaggi di chat devono mantenere la sincronizzazione, il che significa che un utente può avere un sacco di collegamenti a lunga elettorali. Quindi è difficile mantenere ogni messaggio consegnato in tempo.

Devo costruire una coda di messaggi per ogni connessione? O quale modo altro di meglio per risolvere questo?

È stato utile?

Soluzione

Per quanto mi sembra modo più semplice per avere una coda di processo / messaggi per utente collegato a chattare (anche avere più di una finestra di chat). Di tenere traccia di data e ora di ultimo messaggio nella finestra di chat di applicazione e quando riconnessione chiedere messaggi dopo questo timestamp. processo di coda di messaggio dovrebbe conserva i messaggi solo per arco di tempo ragionevole. In questo scenario riconnessione è tutto fino al cliente. In un altro scenario è possibile inviare una sorta di cuore batte dal server ma sembra meno affidabile per me. Non risolve problema con altra ragione di disconnessione di timeout. Ci sono molte varianti di lato server in coda come una coda per cliente, per utente, per chat room, per ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top