0

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:

  1. 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

  2. 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:

  1. 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"

  2. Existe-t-il une meilleure façon d'implémenter 2.3 que setInterval?

Répondre

1

Comment puis-je faire le plug-in C++ NPAPI renvoie 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 plug-in pour le faire (pour atteindre 2.1). C'est - le plugin initie l'interaction au lieu de l'habituel « page web demande le plug-in de faire quelque chose »

Utilisez this example.

Existe-t-il un meilleur moyen d'implémenter 2.3 que setInterval?

setInterval fonctionne assez bien.

+0

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

+1

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. –