Messagerie instantanée avec Java RMI [HELP]

Résolu
Bonjour tout le monde j'espère que vous allez bien ,
j'essaye d'implémenter une messagerie instantanée.
Ma question est:
Est ce possible d'implémenter une MI en utilisant java RMI, et est ce que le RMI ouvre un canal full duplex entre le client et le server (est ce temps réel) ou il faudra faire du polling pour voir si le client a reçu un nouveau message ?.
Merci pour votre aide.

Configuration: Windows / Chrome 96.0.4664.45

2 réponses

  1. Modérateur
    Bonjour,

    RMI permet d'appeler du code distant : tu fournis le nom de la classe, la méthode et les paramètres, ça te renvoie un résultat. C'est en temps réel, mais strictement à sens unique.

    Remarque : RMI est un vieux protocole qui n'a plus trop de raison d'être aujourd'hui, il vaudrait mieux faire du REST (avec JAX-RS en Java)
    1. Donc si j'ai bien compris, les rmi ne sont pas comme les socket ou le client peut etre notifier d'une modification sans qu'il est a requeté se qui signifie il faut faire du pooling sur une methode qui retournera au client des message qu'il a reçu.?
    2. Modérateur
      @ghostman15418Le RMI c'est un protocole, les sockets c'est une technologie, il se trouve que pour que ça fonctionne le RMI va utiliser les sockets, mais uniquement dans un sens (un POST en HTTP).

      https://docs.oracle.com/en/java/javase/17/docs/specs/rmi/protocol.html

      NB. Il existe un mode multiplexé pour que le client et le serveur puisse s'envoyer plusieurs requêtes avec la même connexion, mais ça ne change rien au sens de la communication. Tu appelles une méthode, ce n'est pas elle qui t'appelle.
  2. Merci beacoup, ce qui veut dire si je veux faire une messagerie instantanée avec rmi je dois faire une boucle qui appelle une methode qui renvoie les messages du client, ce qui s'appelle faire du pooling (comme ce qui etait fait sur le web avant l'arrivé de websocket).
    1. Modérateur
      En effet tu n'auras pas le choix en RMI. Après, même avec des technologies plus récentes, le polling reste une bonne solution pour économiser la consommation de ressources côté serveur.
    2. @KXd'accord, je vous remercie énormément pour votre précieuse aide.