Chat web collectif

J'ai besoin de développer un chat web avec une fonctionnalité "avancée": grouper le chat – comme le système de chat de Skype.

La théorie est sortingviale, mais en pratique, c'est très difficile. Depuis vendredi dernier j'y pensais, mais je n'ai aucune idée de comment je peux appliquer cette architecture. Fondamentalement, j'ai besoin d'une design de database avec une bonne structure sans redondance de magasin.

Ok ……. jusqu'ici cela semble simple, mais maintenant je vais vous présenter notre caractéristique principale: l'histoire par l'user.

Je peux créer une conversation avec 2 users. Ok, deux jours ont passé et je veux append un troisième user pour join la conversation. L'histoire du chat sera différente pour lui: il ne pourra pas voir les anciens messages dans ce chat.

Merveilleux, hein? Rappelez-vous, amis: je ne peux pas utiliser XML pour stocker l'histoire localement. J'ai besoin d'user une database SQL. Dans mon cas, j'utilise SQL-Server, de Microsoft.

Pouvez-vous tous comprendre mon problème? Si oui, n'est pas sortingvial, hein? D'accord. Quelqu'un peut-il penser comment je peux résoudre ce problème? Je deviens fou!

En fait, le problème est sortingvial. Le stocker en XML serait le vrai problème.

  • Utilisateurs (ID user, nom)
  • Chat (ChatId, ChatName)
  • ChatParticipation (ChatParticipationId, UserId, JoinChatMessageId, LeaveMessageId)
  • ChatMessages (ChatMessageId, ChatId, UserId, Message)

En ajoutant la table ChatParticipation , vous saurez exactement quel est le ChatMessageId auquel l'user a joint le chat ( JoinChatMessageId ) et ne lui affichez pas les messages antérieurs. LeaveMessageId peut effectuer un suivi lorsqu'il quitte la salle de conversation. Les jointures / congés multiples peuvent être modélisés comme une participation séparée.

Vous n'avez pas dit quelle langue (PHP etc) .. Donc c'est un peu dur, mais si je le créais du sharepoint vue de PHP, j'aurais le chat basé sur id. http://www.site.com/chat.php?id={id} et ensuite avoir un moyen d'accepter / refuser l'user en conséquence.

Je peux créer une conversation avec 2 users. Ok, deux jours ont passé et je veux append un troisième user pour join la conversation. L'histoire du chat sera différente pour lui: il ne pourra pas voir les anciens messages dans ce chat.

Pourquoi ne pas donner à chaque message une date et une heure, puis lorsqu'un membre user entre dans le chat, il ne peut voir que les messages de cette date / heure? Cela pourrait fonctionner en théorie.

Donc, si je rejoins le chat aujourd'hui à 15h20, je ne peux voir les messages que le 15h21 ou après.

Votre problème principal est d'afficher les messages en time réel, car il s'agit d'une application web.

Bonne chance!

Je ne suis pas sûr, si je comprends bien votre problème.

Autant que je comprends, vous avez besoin de 4 tables: user (userid, nom d'user), conversation (conversationid, conversationtitle), user_conversation (userid, conversationid) post (userid, conversationid, text)

L'user stocke tous les users enregistrés dans votre système. la conversation stocke toutes les conversations. user_conversation met en correspondance les users avec les conversations auxquelles ils sont autorisés. Post stocke les messages qu'un user a fait dans une certaine conversation.

Maintenant, vous pouvez simplement récupérer des données de post par user, par conversation ou les deux. Si vous ne voulez pas qu'un user voit les messages plus anciens, ajoutez un champ de date.

Cordialement

Luigi