2009-09-23 8 views
0

J'ai une application de bureau et un navigateur avec une application Web démarrée qui s'exécute sur mon ordinateur. Si je sélectionne quelque chose dans l'application de bureau, je veux laisser l'application web exécuter du JavaScript. Ma question est maintenant, y a-t-il une possibilité de communiquer directement entre ces 'applications' ou est le seul moyen de notifier le web-apps serveur, et les sondages d'application web après cela change avec ajax ou autre chose?DesktopApp communique avec WebApp

Avez-vous des liens à lire ou des mots-clés à utiliser avec Google?

thx à l'avance

Répondre

0

Votre navigateur n'est pas un serveur web, et doit donc initier toute communication web. Je vais deviner que votre application de bureau est un client Web uniquement, et non un serveur Web. Par conséquent, il doit initier toutes les communications Web. Votre application Web est un serveur Web et n'a donc pas besoin d'initier de communication. En ce qui concerne le navigateur ou l'application de bureau, il ne peut pas initier de communication car aucun d'entre eux n'est un serveur web. Par conséquent, si vous souhaitez que l'application de bureau communique avec le navigateur Web, vous devez utiliser l'application Web comme intermédiaire et l'application Web doit stocker tous les messages partagés entre le navigateur et l'application de bureau, et le destinataire. de la communication doit interroger le serveur Web pour toutes les nouvelles données partagées.

1

L'application Web peut facilement accéder à l'application de bureau via HTTP ancien. Lancez un serveur HTTP primitif dans votre application de bureau, laissez-le écouter sur un port élevé, laissez l'application Web émettre une requête HTTP de type AJAX à localhost: thatport (ai-je déjà mentionné jQuery?).

Mais vous voulez que l'information soit inversée - du bureau au web. Pas de désespoir, il y a un petit quelque chose appelé sondage. L'application Web émet une demande. Le serveur HTTP de l'application de bureau l'attrape et ne répond pas pendant un délai d'attente raisonnable (par exemple, 10 secondes). Si un événement se produit dans l'application de bureau pendant cette période, vous répondez immédiatement aux données de l'événement. Si ce n'est pas le cas, vous répondez, une fois le délai d'expiration expiré, avec un code qui dit «continuez d'attendre» et l'application Web réémet la demande. Si l'événement à transmettre se produit entre les requêtes HTTP, il est mis en file d'attente jusqu'à la prochaine demande.

Cette technique est activée par le fait que AJAX est asynchrone - une requête HTTP en attente n'interfère pas avec la fonctionnalité normale du navigateur.

Questions connexes