Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Java socket chat 1by1]

    3 février 2016 à 2:32:47

    Bonjour,

    Je développe actuellement une application sur android. Voilà, dans mon projet j'aimerais développer une interface de chat privé (1 by 1) comme par exemple Facebook Messenger.

    J'ai commencé à développer cette partie à l'aide des sockets de Java, mais je n'ai réussi qu'à développer une communication multi-client sur un serveur (tous les clients communiquent à travers le serveur et tout le monde voit ce que tout le monde écrit sur celui-ci). Ce qui me convient pas puisque j'aimerais créer des chats privées. J'ai pensé à affecter un serveur à chaque client avec pleins de numéros de ports différents mais cela me parait trop fastidieux. Ensuite j'ai voulu faire filtrer les messages par le serveur pour les envoyer au bon destinataire mais apparemment c'est pas possible avec le pack Java .net

    Voilà, j'ai cherché partout sur la toile je n'ai rien trouvé. Mis à part, l'utilisation de Node.JS qui pourrait peut-être résoudre ce problème. Cependant je ne sais pas utiliser Node.JS et encore moins pour android.

    Si vous avez des réponses, ça m'aiderait grandement.

    • Partager sur Facebook
    • Partager sur Twitter
      3 février 2016 à 15:43:42

      Si tu arrives à créer une communication multi-client sur un serveur rien ne t'empêche de créer une communication entre 2 personnes si tu implémentes le code du serveur correctement.

      "affecter un serveur à chaque client avec pleins de numéros de ports différents"

      Bon je ne te cacherais pas que j'ai souri en lisant cette phrase :D , remonte dans le temps et oublie cette idée qui ne t'a jamais passé par la tête :-°

      "Ensuite j'ai voulu faire filtrer les messages par le serveur pour les envoyer au bon destinataire mais apparemment c'est pas possible avec le pack Java .net"

      Là ça commence à devenir intéressant. Il ne faut pas s'attendre à ce que toutes les solutions tombent du ciel, c'est vrai que faire du multi-client est plus simple à faire que du 1-to-1, mais rien ne t'empêche de mettre en place un "filtre" (que j'aurais appelé un "contrôle") pour faire ce 1-to-1. 

      Sinon peux-tu nous montrer la solution miracle proposée par Node.js ?

      • Partager sur Facebook
      • Partager sur Twitter
      Site : https://gokan-ekinci.appspot.com | Miagiste en recherche d'emploi | Profil [Dév. Java SE & EE | Dév. QlikView]
        3 février 2016 à 19:23:40

        Bonjour,

        Merci de ta réponse,

        Je me doutais que ma première idée était fastidieuse, mais fallait bien réfléchir à des pistes :).

        Alors, voilà c'est exactement ça je cherche à mettre en place un filtre qui redirige mon message que sur un client, cependant je n'ai trouvé aucun moyen de le faire. Sur la doc android, aucune fonction à l'air de pouvoir le faire directement. Je vais essayer de réfléchir là-dessus quand même si quelqu'un à une solution, je suis preneur.

        Sinon pour NodeJS, justement le framework propose un SDK socket.io qui contient une fonction pour filtrer les messages.

        J'ai trouvé ceci sur la doc Socket.IO :

        If you want to send a message to everyone except for a certain socket, we have the broadcast flag:

        io.on('connection', function(socket){ socket.broadcast.emit('hi'); });
        • Partager sur Facebook
        • Partager sur Twitter
          3 février 2016 à 21:58:43

          Je pense que c'est plutôt cet exemple qui t'aurait intéressé si tu faisais du Socket.IO :

           socket.broadcast.to(socketid).emit('message', 'Slt c un message privé ;)');


          L'exemple ci-dessus te donne un indice si tu veux produire un mécanisme similaire en Java. N'hésite pas à me dire si tu ne vois pas où je veux en venir (j'essaye de te faire réfléchir sur une solution).

          • Partager sur Facebook
          • Partager sur Twitter
          Site : https://gokan-ekinci.appspot.com | Miagiste en recherche d'emploi | Profil [Dév. Java SE & EE | Dév. QlikView]
            4 février 2016 à 23:03:49

            Cette fonction en soket.io, me permet de difusser (broadcast) un message privé à un socketid.

            Si il existe un mécanisme similaire en java, ce serait une fonction de broadcast?

            • Partager sur Facebook
            • Partager sur Twitter
              5 février 2016 à 2:00:39

              Je ne voudrais pas dire de bêtise en te disant qu'un "mécanisme similaire" (j'entends par là une API Java SE qui fait la même chose que Socket.IO) existe, de plus tu en es sur que ton "brodcast" de Socket.IO soit du TCP/IP et pas du UDP/IP (protocole non connecté) ? Bref, réfléchit plutôt sur la partie "à un socket id" pour cibler un client en particulier dans le cadre d'une conversation privée.
              • Partager sur Facebook
              • Partager sur Twitter
              Site : https://gokan-ekinci.appspot.com | Miagiste en recherche d'emploi | Profil [Dév. Java SE & EE | Dév. QlikView]

              [Java socket chat 1by1]

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown