PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → Tchat: Meilleur solution d'envoi/réception? [WM22 Android/IOS]
Tchat: Meilleur solution d'envoi/réception? [WM22 Android/IOS]
Débuté par NiceBel, 11 aoû. 2017 13:05 - 11 réponses
Membre enregistré
515 messages
Popularité : +7 (7 votes)
Posté le 11 août 2017 - 13:05
Bonjour,

Je souhaite développer une application de tchat. Quelle est, à votre avis, la meilleur solution d'envoi/réception des données?

J'ai entendu parler de:
- Node js : j'en ai aucun idée, est ce que c'est faisable avec WM22
- Sockets : j'en ai aucun idée
- Requêtes JSON: je maitrise.
- D'autres?

Merci.
Message modifié, 11 août 2017 - 13:12
Membre enregistré
151 messages
Popularité : +7 (7 votes)
Posté le 11 août 2017 - 13:24
Une idée parmi tant d'autres :

Côté serveur, une application WinDev (normal donc, pas mobile), qui ouvre une socket (avec SocketCrée & SocketAccepte) et reçoit du JSON, ou autre. Puis renvoie les messages à tous les destinataires à l'aide du Push (avec NotifPushEnvoie).

Côté client, une application WinDev mobile qui balance du JSON (ou autre) sur la socket du serveur (avec SocketConnecte & SocketEcrit ). A la réception d'un Push (avec NotifPushProcédure), alors rafraîchir la fenêtre de chat.

Il ne faudra pas oublier de bricoler un système d'authentification, genre un login/password qui une fois validé sur le serveur, renvoie un token au client, et le client doit balancer le token avec chaque message.

Pas si simple.
Message modifié, 11 août 2017 - 13:53
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 11 août 2017 - 20:35
Bonjour,

Une autre idée... pourquoi ne pas utiliser MQTT ?
Ce système est vraiment génial !

Cordialement,
Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 12 août 2017 - 07:44
bonjour

Créer un webservice pour avec webdev/windev.

Si vous avez besoin d'aide appelez-moi sur skype adrianoboller

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
515 messages
Popularité : +7 (7 votes)
Posté le 13 août 2017 - 16:24
Bonjour,
J'ai lu un petit peu à propos le MQTT, apparement c'est une très bonne solution Machine to machine, qui permet de laisser un certain port ouvert pendant la communication, ce qui fait pas besoin de se reconnecter à chaque fois et c'est le point fort de NodeJS selon ce que j'ai entendu (comme elle utilisé de la part de messenger de facebook je pense ?) ...
Y a t-il pas par hazard un exemple basé sur ce protocole? et avez une idée comment l'implémenter ?

PS: je compte pas travailler avec webdev mais plutôt avec un serveur standard et une BDD mysql.
Membre enregistré
515 messages
Popularité : +7 (7 votes)
Posté le 13 août 2017 - 16:51
A propos l'envoie des messages avant je lisais directement les messages à travers un webservice via un timer. Maintenant si j'ai bien compris, via notifications push sera bcp mieux je pense !!

Ma plateforme est tout simplement la suivante: application WM et un serveur standard (BDD mysql), Webservice JSON.
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 13 août 2017 - 20:22
Bonjour,

Etant très intéressé par les objets connectés, j'avais depuis un bon moment envie de monter mon propre broker MQTT. Il est d'ailleurs fort probable que je propose un tel service d'ici quelques temps...

Pour tester mon actuel serveur (encore en cours de développement) j'ai développé quelques lignes de code qui finalement est - NiceBel - la base d'un chat ! Vous trouverez le projet ici : https://datasite.fr/download/basic_chat_using_mqtt_server.zip

- Ouvrez l'archive via "restaurez un projet" de windev puis créez un exécutable.
- Lancez 2 sessions simultanément
- Dans la première session tapez un pseudo, "pierre" par exemple et cliquez sur le bouton Connexion
- Faite de même dans la seconde session avec un pseudo différent évidement

Notez bien, un topic est calculé aléatoirement et doit être identique sur les 2 sessions. Donc, si vous lancez les sessions sur 2 postes différents, saisissez le topic de l'un pour le recopier dans l'autre. Sinon cela ne fonctionnera pas.

Vous pouvez rejoindre le chat via un 3ème client via un websocket par exemple.
Utilisez ce lien par exemple : http://www.hivemq.com/demos/websocket-client/
Auquel cas, dans Publish / Topic, copiez le topic que vous récupérerez dans la la champ "Salon".

NOTEZ BIEN : la fonction MQTTConnecte semble boguée. J'ai contacté le support pc soft à cet égard.
Il est en effet impossible de se connecter sur un broker nécessitant une connexion par user / password.
Et ne parlons pas du SSL...

J'espère que cela sera corrigé rapidement.

Etant électronicien à la base, j'ai quelques idées pour la création d'objets connectés. Si vous aussi êtes intéressé où avez des projets à exposer, contactez-moi. Je pense ouvrir une rubrique sur un prochain site (datasite.fr) qui permettra entre autre d'exposer les projets de chacun.
Si l'idée vous parait intéressante, adressez-moi un email.

Enfin, n'hésitez pas à utiliser mon serveur pour vos tests (mqtt.datasite.fr). Notez bien, il est ouvert et ne garantis pas le service pour le moment.

Bien cordialement,
Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Message modifié, 13 août 2017 - 20:26
Membre enregistré
515 messages
Popularité : +7 (7 votes)
Posté le 13 août 2017 - 23:44
Merci Eric67, vous êtes un génie !! sauf le projet est malheureusement en WD22 alors que j'ai WD20 !! par contre j'ai WM22.
J'ai vérifié pour la fonction MQTTConnecte elle n'est pas disponible pour la plateforme android !!

Ce que je pense actuellement c'est d'utiliser webservice json plus notifications push !! que penser vous ? quel inconvénient?
Membre enregistré
2 569 messages
Popularité : +222 (260 votes)
Posté le 14 août 2017 - 06:04
Bonjour,

Perso j'utiliserai un serveur de sockets. Tu t'abonnes quelque part et tu n'as plus rien à gérer c'est le serveur de socket qui s'occupe de prévenir ses clients qu'il y a une mise à jour.

C'est d'ailleurs ce que fait Node.js si je ne me trompe pas.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
637 messages
Popularité : +36 (36 votes)
Posté le 14 août 2017 - 10:41
Bonjour,

Merci pour le compliment mais euh... je ne suis pas vraiment sortie de la lampe d'Aladdin :)

Plus sérieusement, si vous voulez tester les fonctions MQTT de Windev, voici un lien vers le .exe compilé en WD22 : https://datasite.fr/download/demo_chat_using_mqtt.zip
Dézippez-le dans le répertoire de votre choix.
Vous pouvez recréer très facilement la même chose en quelques lignes de codes. Vous verrez, ces fonctions sont - elles - géniales.

Il faudra juste vous abonner à un broker ou monter le votre.

Sinon oui, comme dit Philippe un serveur de sockets est une très bonne alternative mais il faudra tout coder. Finalement un broker n'est pas très éloigné de cela et là, il n'y a plus rien à faire...

Certes, ces fonctions ne sont pas (encore ?) implémentées pour android mais on peut contourner cela en utilisant les websockets.
Et puis, des librairies Java sont disponibles un peu partout...

Bon dev,
Eric.

--
Eric DELATTRE
http://www.yoosite.fr
Membre enregistré
515 messages
Popularité : +7 (7 votes)
Posté le 15 août 2017 - 13:14
Bonjour Eric67,
J'ai testé l'appli en lançant l'exe deux fois en s'abonnant au même salon: elle est parfaite, c'est spontané !!
D'après plusieurs recherches, apparemment on peut atteindre le même niveau avec un serveur de sockets. Voilà, maintenant ce que j'ai besoin de savoir :
- Faut-il créer un socket pour chaque communication bidirectionnel? comment le créer et quand le fermer?
- Est ce que c'est possible que le serveur soit à la base d'un autre langage : PHP.
- Au niveau du serveur on aura pas besoin de créer une BDD?
Membre enregistré
2 569 messages
Popularité : +222 (260 votes)
Posté le 16 août 2017 - 05:26
Bonjour,

Regarde cette page https://doc.pcsoft.fr/?1000017192. Elle donne des informations qui peuvent t'être utiles. Perso j'avais tenté d'utiliser les websockets et je m'y suis cassé les dents.

J'ai un projet qui doit les utiliser et je vais donc devoir m'y remettre on verra bien.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique