PureBasic

Forums PureBasic
Nous sommes le Sam 16/Jan/2021 6:50

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 1 message ] 
Auteur Message
 Sujet du message: Server webgadget 10 secondes
MessagePosté: Sam 21/Déc/2019 14:29 
Hors ligne

Inscription: Jeu 07/Mar/2013 19:02
Messages: 244
Localisation: France Alsace / Espagne Girona
Hello,

Voilà le code pour un serveur qui attend une connexion l'ors de la réception d'un message il ouvre un WebGadget qui reste 10 secondes.
Me suis bien pris la tête avec car si on a pas le Timer rien ne s'affichera dans le WebGadget, c'est con hein.
Je précise que ne suis pas un pro, donc il y aura surement moyen de faire mieux

L'idée c'est un d'un logiciel de caisse tactile PurHTTP héberger à l’extérieur, dont on récupère la requête sur un serveur localhost, qui envoi le ticket de caisse sur l'écran client.

Bon amusement la je vais faire joujou avec les imprimantes.

Bonnes fêtes de fin d'année à toutes et à tous

Pour tester avec un navigateur Attention Chrome ne marche pas chez moi il envoi de la M.... donc si le Ticket reste blanco c'est pas bon :
Code:
http://127.0.0.1:8000/ticket/Salut-le-Ticket


Perso j'utilise Wget :
Code:
wget http://127.0.0.1:8000/ticket/Salut-le-Ticket




Code:
Enumeration
  #WebGadget
  #Window_Ticket
  #fenp
  #server
EndEnumeration

Global EOL$
Global page$
Global HTML.S

; pour les fins de ligne
EOL$ = Chr(13)+Chr(10)

If InitNetwork() = 0
  End
EndIf
Port = 8000
*Buffer = AllocateMemory(4096)

If CreateNetworkServer(#server, Port,#PB_Network_TCP)
  Repeat
    SEvent = NetworkServerEvent()
   
    If SEvent
      ClientID = EventClient()
      Select SEvent
         
        Case #PB_NetworkEvent_None        ; Il ne s'est rien passé.   
          Debug "NetworkEvent_None" 
          ;Case #PB_NetworkEvent_Connect  ; Un nouveau client s'est connecté au serveur   
          Debug "NetworkEvent_Connect" 
          ;         Case #PB_NetworkEvent_Data        ; Des données ont été reçues     
          ;           Debug "NetworkEvent_Data" 
         
        Case #PB_NetworkEvent_Data
                 
          ; on récupère la requête du serveur
          RequestLength.l = ReceiveNetworkData(ClientID, *Buffer, 4096)
          String$ = PeekS(*Buffer, RequestLength, #PB_UTF8)
       
          ; on passe par FindString car la regex ne marche pas même si on enlève Chr(13) Chr(10)   
          Pos = FindString(String$, "HTTP/1.1",1)
          ns$ = Left(String$, Pos-1)
         
          exp =CreateRegularExpression(#PB_Any,"^GET /.*?|/.*$")
          PrinterOrEcran$ = ReplaceRegularExpression(exp,ns$,"")
          FreeRegularExpression(exp)
         
          ; Pas besoin le client envoi déjà Encoder du moins le mien
          ;pageresult$ = URLDecoder(pageresult$)
         
         
          If PrinterOrEcran$ = "ecran"
           
          EndIf
          ;#######################################################     
         
          If PrinterOrEcran$ = "ticket"
           
            ;on envoi au client un réponse propre
            ContentType$ = "text/html"
            page$ = "<html>" + EOL$
            page$=page$ + "  <body>" + EOL$
            page$=page$ + "    <p>Hello world!</p>" + EOL$
            page$=page$ + "  </body>" + EOL$
            page$=page$ + "<html>" + EOL$
            head$="HTTP/1.1 200 OK" + EOL$
            head$=head$+"Date: Wed, 07 Aug 1996 11:15:43 GMT" + EOL$
            head$=head$+"Server: Ticket Web Server 0.1" + EOL$
            head$=head$+"Content-Length: "+Str(Len(page$)) + EOL$
            head$=head$+"Content-Type: "+ContentType$+EOL$
            head$=head$+EOL$
            page$=head$+page$
            SendNetworkString(ClientID,page$)
   
            HTML.s = "<html><body>" +
                     "<center>COUCOU c'est moi<br>je suis là pour 10 secondes !!!!!!<br><br>LE TICKET</center>" +
                     "</body></html>"
            ;HTML.s = pageresult$ ; activé c'est le string que l'on envoi, désactivé  c'est le texte dans le HTML
            If OpenWindow(#Window_Ticket, 2000, 0, 300, 600, "Ticket client", #PB_Window_SystemMenu | #PB_Window_NoActivate | #PB_Window_BorderLess | #PB_Window_Tool)
              WebGadget(#WebGadget, 0, 0, 300, 600, "")
              SetGadgetItemText(#WebGadget, #PB_Web_HtmlCode, HTML)
              StickyWindow(#Window_Ticket, 1)
             
              AddWindowTimer(#Window_Ticket, 123, 250)
             
              ; Temps de présence du ticket
              Value =0
              Repeat
                Event = WaitWindowEvent()
                If Event = #PB_Event_Timer And EventTimer() = 123
                  Value = Value + 1
                  Delay(1000) ; 10 secondes plus ou moins c'est un Timer
                 
                  If Value =10
                    Goto vasy
                  EndIf
                 
                EndIf   
               
              Until Event = #PB_Event_CloseWindow
            EndIf
            vasy: ; Sorti de la fenetre
            fenetre_ticket=1
           
          EndIf
         
          ;##############################################################       
          ;         Case #PB_NetworkEvent_Disconnect ; Un client nous à quitté
          ;           Debug "NetworkEvent_Disconnect"
         
        Default
         
          If fenetre_ticket=1
            CloseWindow(#Window_Ticket)
          EndIf
          fenetre_ticket=0
         
      EndSelect
     
    Else
      Delay(20)  ; Don't stole the whole CPU !
    EndIf
   
  Until Quit = 1
  CloseNetworkServer(0)
Else
  MessageRequester("Error :", " Creation du serveur (port utilisé ?).", 0)
EndIf
End

_________________
GCC 7.4.0 / PureBasic 5.71 / Ubuntu 18.04.3 LTS


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 1 message ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 7 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye