1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : décembre 2006
    Messages : 161
    Points : 72
    Points
    72

    Par défaut Imprimer depuis un service web, buffer ?

    Bonjour tout le monde,
    Je cherche a faire une appli qui me permet de récupérer des étiquettes type Colissimo depuis un appel du module étiquetage de notre boutique vers un service web local.
    J'ai reussi a faire cette partie ainsi qu'a imprimer, mais je pense qu'il passer par un truc genre file d'attente pour imprimer au fil de l'eau les étiquettes téléchargées.

    Voici ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    var fs = require('fs');
    var http = require('http');
    var https = require('https');
     
    var hskey = fs.readFileSync('sslcert/key.pem');
    var hscert = fs.readFileSync('sslcert/cert.pem')
     
    var credentials = {
        key: hskey,
        cert: hscert
    };
     
    var express = require('express');
    var app = express();
     
    app.get('/', function (req, res) {
     
      res.send('Hello World!');
    });
     
    app.get('/setPrinter/:printer', function(req, res) {
     
        res.header('Access-Control-Allow-Origin', '*');
        res.header('Access-Control-Allow-Headers', 'X-Requested-With');   
        res.header('Content-Type', 'application/json' ); 
     
        console.log(req.params.printer);
     
        res.json({'response': 'OK','error': ''});   
    });
     
    app.get('/getPrinters', function(req, res) {
     
        res.header('Access-Control-Allow-Origin', '*');
        res.header('Access-Control-Allow-Headers', 'X-Requested-With');   
        res.header('Content-Type', 'application/json' ); 
     
        res.json({'response': 'Datamax','error': ''});    
    });
     
    var bodyParser = require('body-parser');
    var request = require('request');
    var net = require('net');
     
    app.use(bodyParser.json()); // support json encoded bodies
    app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies
     
    // Création d'une route post
    app.post('/printFileByURL', function(req, res) {
     
        res.header('Access-Control-Allow-Origin', '*');
        res.header('Access-Control-Allow-Headers', 'X-Requested-With');   
        res.header('Content-Type', 'application/json' ); 
     
        urlToPrint = Object.keys(req.body)[0];
     
        request.get({
            url: urlToPrint
        }, function(error, response, body) {
            if (!error && response.statusCode == 200) {
     
                var client = new net.Socket();
                client.connect(9100, '192.168.10.225', function() {
                    console.log('Connected');
                    client.write(body);
                    console.log('Impression en cours');
                });
     
                res.json({'response': 'OK','error': ''}); 
     
            } else {
                res.json({'response': '','error': 'Impossible de recuperer l\'etiquette'}); 
            }
        });
     
    });
     
    var httpsServer = https.createServer(credentials, app);
    httpsServer.listen(4568, function () {
        console.log('Example app listening on port 4568!');
      });
     
     
    // app.listen(4568, function () {
    //     console.log('Example app listening on port 4568!');
    //   });
    J'imagine qu'il faut avoir une autre appli ou un autre thread qui ecouterai un eventuel buffer ...
    Auriez vous des idées ou des infos ??

    Merci par avance

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    décembre 2006
    Messages
    161
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : décembre 2006
    Messages : 161
    Points : 72
    Points
    72

    Par défaut

    Exemple j'ai 10 commandes, le module de notre boutique va faire 10 post request sur le serveur local, a chaque poste je lis un fichier distant contenant la structure d'une étiquette et j'ouvre une connexion tcp sur le port 9100 de mon imprimante et je lui balance le contenu le contenu de l'etiquette. sauf que pour les 10 posts je dois attendre de fermer le socket pour lancer une autre impression, ce qui est vraiment long. Du coup auriez vous des suggestions ?

Discussions similaires

  1. Imprimer depuis une application web
    Par toure32 dans le forum JSF
    Réponses: 1
    Dernier message: 15/01/2010, 11h29
  2. Comment lancer un agent Jade depuis un service web?
    Par ziedtrabelsi dans le forum Web Services
    Réponses: 0
    Dernier message: 27/09/2009, 20h06
  3. Réponses: 2
    Dernier message: 31/01/2009, 18h44
  4. [WebServices] rechercher un certificat depuis un Service Web
    Par Cédric B. dans le forum Services Web
    Réponses: 2
    Dernier message: 24/04/2007, 11h48
  5. Réponses: 9
    Dernier message: 11/01/2007, 22h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo