PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV (versões anteriores) → Forte Lenteur lors de création de serveur avec Sockets
Forte Lenteur lors de création de serveur avec Sockets
Iniciado por Quentin DRAY, jan., 23 2020 11:01 AM - 1 resposta
Publicado em janeiro, 23 2020 - 11:01 AM
Bonjour,

Voici mon problème: j'ai un soucis de chargement lors que j'exécute mon application qui crée un serveur embarqué où je peux charger un fichier HTML. Le problème c'est que lorsque j'essaie de charger mon fichier ou bien de charger la page d’accueil (127.0.0.1:port), je dois attendre quelques (longues) secondes avant que la page ne soit entièrement chargée, et je ne comprends pas.

Voici les codes:
Procedure ServeurHTTP() //Démarrer le serveur

nPort est un entier
nPort = 25565

SI PAS SocketCrée(csSocketServeur, nPort) ALORS
SAI_HTTPTracer += ErreurInfo(errInfo)+RC
SINON
ThreadExecute(csThreadClient, threadNormal, AccepteConnexionClient)
SAI_HTTPTracer += ChaîneConstruit("Serveur démarré sur le port %1", nPort)+RC
FIN


Procedure MessageClient(SocketClient) //Lire messages qui viennent du client


sMessageRecu est une chaîne
sMessNavigateur est une chaîne
sDemandeRequete est une chaîne

QUAND EXCEPTIONEXCEPTION DANS

BOUCLE
sMessageRecu = SocketLit(SocketClient,Vrai)
SAI_HTTPTracer += sMessageRecu + RC

SI Majuscule(sMessageRecu) [= "GET" ALORS // si la requête est une méthode GET
sDemandeRequete = SansEspace(sMessageRecu[[4 À Position(sMessageRecu, "HTTP/")-1]]) //Recupere le nom du fichier demandé

SI fFichierExiste(SansCaractère(sDemandeRequete,"/")) ALORS //Si fichier demandé existe

sMessNavigateur = "HTTP/1.0 200 OK"+RC //Debut d'entête HTML
sMessNavigateur += "Serveur : HTTP en Windev"+RC
sMessNavigateur += "Content-Type : "+ClassementExtension(fExtraitChemin(SansCaractère(sDemandeRequete, "/"), fExtension))+RC
sMessNavigateur += "Content-Lenght : "+fTaille(SansCaractère(sDemandeRequete, "/"))+RC
sMessNavigateur += RC //Fin d'entête
//sMessNavigateur += "<body><h1>TEST DE SERV Windev</h1></body>" //AfficheMessage
sMessNavigateur += fChargeBuffer(SansCaractère(sDemandeRequete, "/"))



SINON //sinon affiche page de test
sMessNavigateur = "HTTP/1.0 404 Found"+RC //Debut d'entête HTML
sMessNavigateur += "Serveur : HTTP en Windev"+RC
sMessNavigateur += "Content-Type : "+ClassementExtension(".html")+RC
sMessNavigateur += "Content-Lenght : 50"+RC
sMessNavigateur += RC //Fin d'entête
sMessNavigateur += "<body><h1>404 : Fichier introuvable</h1></body>" //AfficheMessage

FIN
SocketEcrit(SocketClient,sMessNavigateur)
FIN
SORTIR
FIN

FAIRE
SI SocketExiste(SocketClient) ALORS
SocketFerme(SocketClient)
FIN
FIN


Procedure ClassementExtension(sExtensionReq est une chaîne)
SELON sExtensionReq
CAS ".html",".htm"
RENVOYER "text/html"
CAS ".jpg", ".jpeg"
RENVOYER "image/jpeg"
CAS ".gif"
RENVOYER "image/gif"
CAS ".json"
RENVOYER "application/json"
AUTRE CAS
RENVOYER "application/octet-stream"
FIN


Procedure AccepteConnexionClient() //Procédure pour accepter le client

sSocketClient est une chaîne



TANTQUE SocketAttendConnexion(csSocketServeur)
sSocketClient = SocketAccepte(csSocketServeur)
SocketChangeModeTransmission(csSocketServeur, SocketSansMarqueurFin) //Changement de mode de connexion
ThreadExecute(sSocketClient, threadNormal, MessageClient,sSocketClient)

FIN



Je ne comprends pas d'où viens la lenteur de chargement de la page, sachant que le code fonctionne et que j'arrive à charger un fichier .json mais il faut que j'attends 5 à 6 secondes pour charger 2 valeurs dans ce fichier...

Merci de votre aide.

PS: Lorsqu'il s'agit de mon fichier HTML, 2 min après, toujours pas de fichier chargé.
Membro registado
1 mensagem
Publicado em janeiro, 23 2020 - 11:22 AM
Bonjour,
J'ai créé un compte pour suivre le thread,
J'ai oublié de préciser qu'il s'agit de WD24.
Merci à tous.