Question

Je suis en train de faire le chat Comet avec Erlang. J'utilise une seule connexion (long polling) pour le transport des messages. Mais, comme vous le savez, la connexion à long polling ne peut pas être connecté en tout temps. Chaque fois qu'un nouveau message arrive ou atteint le délai d'attente, il se brisera puis se connecter au serveur à nouveau. Si un message est envoyé avant que la connexion reconnecté, il est un problème pour maintenir l'intégrité de la discussion.

Et aussi, si un utilisateur ouvre plus d'une fenêtre avec la comète-chat, tous les messages de chat doivent maintenir la synchronisation, ce qui signifie que l'utilisateur peut avoir beaucoup de connexions à long vote. Il est donc difficile de garder tous les messages livrés à temps.

Dois-je construire une file d'attente de messages pour chaque connexion? Ou quoi d'autre meilleure façon de résoudre ce problème?

Était-ce utile?

La solution

Pour me semble plus simple d'avoir un processus / file d'attente de messages par utilisateur connecté au chat (ont même plus d'une fenêtre de chat). De garder trace de l'horodatage du dernier message dans l'application de la fenêtre de chat et quand Reconnect demander des messages après cet horodatage. processus de file d'attente de messages doit conserve les messages uniquement pour la durée de temps raisonnable. Dans ce scénario rebranchement est tout au client. Dans un autre scénario, vous pouvez envoyer une sorte de hart bat du serveur, mais il semble moins fiable pour moi. Il ne résout pas problème avec autre raison de la déconnexion de délai d'attente. Il y a beaucoup de variantes de faire la queue côté serveur comme une file d'attente par client, par utilisateur, par salle de chat, par ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top