Pergunta

Estou fazendo bate-papo Comet com Erlang. Eu só uso uma conexão (longa-polling) para o transporte mensagem. Mas, como você sabe, a ligação de longa sondagem pode não ser permanecer conectado o tempo todo. Cada vez que uma nova mensagem chega ou chega ao tempo limite, ele vai quebrar e, em seguida, se conectar ao servidor novamente. Se uma mensagem é enviada antes da re-conectado conexão, é um problema para manter a integridade do chat.

E também, se um usuário abrir mais de uma janela com o cometa-chat, todas as mensagens de chat tem que manter a sincronização, o que significa que um usuário pode ter muitas conexões longo de votação. Por isso, é difícil manter todas as mensagens entregues a tempo.

Devo construir uma fila de mensagens para cada conexão? Ou o que mais melhor maneira de resolver isso?

Foi útil?

Solução

Para mim parece maneira mais simples de ter um processo / fila de mensagens por usuário conectado para conversar (mesmo ter mais de uma janela de chat). De faixa de manter timestamp da última mensagem na aplicação janela de chat e quando reconectar pedir mensagens após esta data e hora. processo de fila mensagem deve mantém mensagens apenas para período de tempo razoável. Neste reconexão cenário é tudo para o cliente. Em outro cenário, você pode enviar algum tipo de hart bate do servidor, mas parece menos confiável para mim. Não está resolvendo problema com outro motivo de desconexão de timeout. Há muitos variante do lado do servidor na fila como uma fila por cliente, por usuário, por sala de chat, por ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top