Nous avons résolu un problème analogue (imprimante de billets connecté au port série) en créant une petite application (TCL/original TK, comme il fonctionne bien sur Win/Mac/Lin, mais C# /. NET maintenant depuis que mono a grandi), que
- prend l'utilisateur/mot de passe
- crée la session avec une requête Web.
- ouvre le navigateur,
- donnant le jeton de session dans l'URL comme une ancre (http [s]: //foo.bar/baz x = y # sessionToken)
De cette façon, il est jamais transmis sur le fil, mais est disponible pour le code JS dans le client. Une fois que l'application d'aide a démarré le navigateur, elle utilise une longue interrogation et le jeton de session (connu du navigateur et de l'application d'aide) pour communiquer avec le serveur Web - en tant qu'application côté client, elle peut communiquer avec le périphérique naturellement.
100 de billets de de 1000 imprimés de cette façon ...
Edit: Oui, je sais que cela devient plus et plus longtemps, mais j'ai besoin (et on m'a demandé de) d'élaborer.
Si vous voulez éviter d'aller le ActiveX/Silverlight/quelle que soit la route, que je suggère fortement, vous avez besoin 4 joueurs:
- Webserver
- Browser
- application d'assistance ("Agent")
- périphérique (imprimante de billets, un scanner de codes à barres, quel que soit)
Votre problème de base est que 1. a besoin de parler à 4., mais ne peut pas. Vous choisissez donc deux voies parallèles: La communication destinée à l'utilisateur est échangée entre le serveur et le navigateur, tandis que la communication destinée à l'équipement est échangée entre le serveur et l'agent, ce dernier le relayant à l'appareil (et inversement). L'agent est une application assez simple, qui communique avec l'appareil via les fonctions du système d'exploitation (comment cela dépend du périphérique) et dialogue avec le serveur via des requêtes HTTP.
Selon, la direction dans laquelle des informations que vous avez besoin de flux:
- Pour faciliter le flux d'informations à partir du périphérique au serveur, il suffit de avoir une activité sur le déclencheur de l'appareil un WebRequest. (Périphérique d'entrée, par exemple scanner de codes-barres)
- Pour faciliter le flux d'informations entre le serveur et le périphérique, utilisez une interrogation longue. (Dispositif de sortie, par exemple une imprimante de billets)
- Pour les deux sens faire les deux (dispositif d'entrée déclenché serveur, par exemple la caméra)
Maintenant, le problème reste est, comment établir une corrélation entre une action humaine dans le navigateur avec un dispositif action - en bref: Comment le serveur peut-il envoyer le ticket que vous avez choisi dans votre navigateur à votre imprimante de tickets, et non pas à n'importe quelle imprimante à long sondage suivante. Pour résoudre ce problème, il est naturel d'utiliser l'ID de session, mais le navigateur et l'agent doivent tous deux connaître le même ID de session. Pour que cela se produise, vous devez le communiquer de l'un à l'autre. Puisque vous ne pouvez pas le communiquer du navigateur à l'agent (ou cette discussion serait sans intérêt), vous devez le communiquer dans l'autre sens - et l'ancre dans l'URL est le véhicule pour y parvenir. Vous effectuez les opérations suivantes:
- utilisateur démarre l'agent (non le navigateur) et entre ses lettres de créance
- appelle l'agent envoie une requête Web pour une connexion au serveur, et récupère un jeton de session (s'il vous plaît utiliser une cryptographie de base ou aller pour HTTPS)
- Agent démarre le navigateur (par exemple en exécutant
cmd.exe /c start "http[s]://domain.tld/start.aspx?x=y#sessiontoken"
)
- Depuis le jeton de session est un point d'ancrage, il ne sera pas envoyé sur le fil, mais sera disponible à la browser- code dégrossi ... Bingo!
- Maintenant, les deux chemins parallell sont ouverts: le navigateur pour les demandes de l'homme, connaissant le jeton de session, et l'agent va maintenant dans les modes décrits ci-dessus,
cela semble intéressant mais je ne suis pas en mesure de suivre votre réponse. – Asdfg
Mise à jour de ma réponse, veuillez patienter. –
Terminé la mise à jour de la réponse. –