Je pense à la conception d'une interface basée sur le Web pour un package d'analyse de données. Voici ce que j'ai à l'esprit:Échange de données entre les composants de la page Web et du backend C++
Les travaux d'analyse de données sont soumis à une file d'attente.
Les utilisateurs peuvent se connecter à l'interface et choisir d'exécuter un travail sur la machine locale ou d'ajouter un nouveau travail à la file d'attente.
Détails:
Une personne se connecte à l'application Web et peut choisir d'exécuter un travail exisiting dans la file d'attente de travail sur la machine locale ou affecter un nouvel emploi à la file d'attente
Si un travail est sélectionné pour être exécuté sur l'ordinateur local, la page Web interroge le package installé sur l'ordinateur local: "C'est le travail que j'ai pour vous." Combien de temps cela prendrait-il pour terminer? "
2.1 Le paquet renverrait une valeur (basée sur des heuristiques) à la page Web
2.2 La page Web peut, en fonction de la valeur renvoyée, choisissez de affecter le travail à la machine actuelle
2.3 Si le travail est alloué à la machine en cours, le package backend continue son chemin tout le temps en gardant la page Web mise à jour avec le progrès qu'il est en train de faire.
Un travail peut prendre de quelques secondes à quelques heures pour terminer.
2.4 Chaque fois que la page Web peut dire le paquet « que vous prenez trop de temps - envoyez-moi ce que vous avez » ou peut-être «J'ai quelque chose de plus important pour vous - envoyez-moi ce que vous avez ».
Le package peut envoyer les données qu'il a en se connectant directement à l'application Web backend à ce stade.
Cela doit fonctionner sous Windows et Linux - donc je vais utiliser l'architecture de plugin NPAPI .
La page Web ferait la plupart de l'interfaçage via Javascript.
Mes questions sont:
Comment puis-je faire le C++ plug-in NPAPI retourner une valeur (une structure JSON) à la page Web javascript et ont une fonction dans la page web exécuter sans la page Web demandant le plugin pour le faire (pour atteindre 2.1). C'est-à-dire que le plugin initie l'interaction à la place de la "page web habituelle demande au plugin de faire quelque chose"
Existe-t-il une meilleure façon d'implémenter 2.3 que setInterval?
Il se peut que le plug-in renvoie la réponse dans un délai> setInterval. La manipulation de ceci nécessiterait des appels settimeout plus complexes. Je veux quelque chose de plus simple. – PoorLuzer
Faites en sorte que le plug-in rappelle la page Web à un certain intervalle et que la fonction qu'il appelle renvoie une énumération de ce qu'il veut faire ensuite. 0 = continue, 1 = donne moi ce que tu as, 2 = abandonne. –