2010-11-05 98 views
0

J'ai un logiciel dorsal qui doit être capable de communiquer avec un navigateur web basé sur gecko (et vice-versa). Quelle est la meilleure façon de réaliser cela? Puisque HTTP est plutôt unidirectionnel (à l'exception, par exemple, de l'inverse AJAX que je considère comme assez "hacky"), je me demande comment faire.Comment réaliser la communication entre le navigateur et le backend?

La création d'un plug-in NPAPI serait-elle une option? Sur la base des données échangées entre le navigateur et le backend, le navigateur doit manipuler le DOM d'une page Web. Les manipulations doivent être assez dynamiques et la vitesse de communication est une exigence importante. Je suis content que toute aide me pointe dans la bonne direction ou fournisse des ressources utiles qui mériteraient d'être lues!

+0

Pourquoi considérez-vous AJAX hacky? C'est vraiment la solution standard de l'industrie pour cela et c'est une technologie assez mature. –

+0

Désolé, je ne voulais pas dire AJAX lui-même étant hacky. Vous avez raison, AJAX lui-même est mature et impressionnant! Je pense plutôt à des solutions telles que Comet ou long polling comme étant un hack pour créer une communication "duplex" sur HTTP. – Simon

Répondre

1

plugins du navigateur d'écriture est pas tout à fait triviale, si vous pouvez utiliser des alternatives comme WebSockets (ou leurs émulations comme web-socket-js, voir here et here pour plus de détails).

Seulement si ces alternatives ne vous donnent pas assez de contrôle en raison d'exigences particulières si vous envisagez d'écrire un plugin de navigateur.
Avec elle, vous obtiendrez tous les avantages de code natif (contrôle élevé sur ce que l'API vous choisissez), mais aussi les problèmes qui vont avec:

  • vous devez commencer à vous soucier de privilèges
  • bugs peuvent planter le navigateur entier
  • vous pourriez avoir à gérer les différences de comportement entre les plates-formes et navigateurs
  • vous avez à vous soucier de la distribution sur plusieurs plates-formes
  • ...

Si vous avez besoin du plus haut niveau de contrôle pour une raison quelconque, vous pouvez

  • mettre en œuvre la gestion de connexion de votre choix dans le plug-in
  • laisser le JavaScript initier des connexions et envoyer des données
  • laisser le JavaScript enregistrer les gestionnaires pour les données entrantes etc.
  • sur les données entrantes appeler les gestionnaires et les transmettre les données

Pour commencer avec les plugins NPAPI see here, pour supporter IE aussi, vous devrez écrire un content extension. Enfin, je vous conseille de jeter un oeil à FireBreath qui fait déjà beaucoup de choses pour vous (cache les différentes API pour IE et NPAPI, vous donne une API de plus haut niveau, des correctifs pour les bugs de navigateurs inclus, ...).