Socket client/serveur.

Le
Jean-Christophe
Bonjour,

Je développe un serveur http avec les sockets windows,
et voudrais qu'aprés une première connection d'un browser
client au serveur (et réponse du serveur par l'envoi
d'une page html complète) le serveur puisse à sa propre
initiative rafraichir la page du browser client.
Pour etre plus clair, voici le topo :

1: Le browser client envoie sa requète au serveur
( http://serveur/ )

2: Le serveur répond en retournant une page html.

3: Lors d'un évènement nécéssitant une mise à jour,
le serveur renvoie au client une autre page html.

J'ai commencé par inclure dans l'en-tete html un auto-reload:
<meta http-equiv="refresh" content="10; URL=http://server/">
ca marche mais le problème est que ce n'est pas le serveur
lui-meme qui décide quand la page doit etre rafraichie.

Pour l'instant j'ai trouvé le truc suivant :
aprés envoi de la page html le serveur laisse
ouverte la socket et, lorque c'est nécéssaire,
envoie au browser la commande JavaScript:
window.location.replace("http://server/");
puis ferme la socket. Le browser client recontacte alors le
serveur comme si l'utilisateur avait lui-meme rafraichi la page.
Ca marche, mais coté serveur la socket doit rester ouverte,
et coté browser celui-ci peut tomber en time-out

Il faudrait quelque chose de plus efficace.
Existe-t'il un moyen de renvoyer une page html
vers le browser client, en remplacant l'ancienne page ?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #22861351
Jean-Christophe , dans le message
écrit :
Je développe un serveur http avec les sockets windows,



Toutes mes condoléances.

et voudrais qu'aprés une première connection d'un browser
client au serveur (et réponse du serveur par l'envoi
d'une page html complète) le serveur puisse à sa propre
initiative rafraichir la page du browser client.



Le HTTP ne le permet pas.

On peut faire vaguement ça avec de l'AJAX et du COMET (où le browser envoie
une requête et le serveur tarde à y répondre), mais c'est gore.
Jean-Christophe
Le #22861461
On Nov 29, 2:19 pm, Nicolas George

Le HTTP ne le permet pas.



Pourtant j'y arrive en laissant la socket ouverte
et en envoyant un window.location.replace()
et le tout fonctionne correctement sous IE et FireFox.
Mais ce qui me gène est la contrainte
de laisser la socket ouverte coté serveur.

On peut faire vaguement a avec de l'AJAX et du COMET (o le browser
envoie une requ te et le serveur tarde y r pondre), mais c'est gore.



Hélas je n'ai que winsock à ma disposition.
J'ai vu des sites ou des infos sur la page html client sont
mises à jour à l'initiative du serveur, comme par exemple
permettre aux connectés de discuter dans une fenètre :
est-il vraiment impossible d'implémenter
cela sous http juste avec winsock ?

Ou peut-etre peux-tu me rediriger vers
un newsgroup plus adéquat sur ce sujet ?
Pascal Hambourg
Le #22861671
Salut,

Jean-Christophe a écrit :

Ou peut-etre peux-tu me rediriger vers
un newsgroup plus adéquat sur ce sujet ?



Voir du côté des fr.comp.infosystemes.www.*.
Olivier Miakinen
Le #22861821
Bonjour,

Le 29/11/2010 14:45, Jean-Christophe a écrit :

Le HTTP ne le permet pas.



Pourtant j'y arrive en laissant la socket ouverte



Cela revient à ce qu'écrivait Nicolas :

[...] (o le browser
envoie une requ te et le serveur tarde y r pondre), mais c'est gore.





Je suis du même avis : tarder à « r pondre » à la « requ te », c'est gore.

Ét cêt ïmbéçîlë dë Gôôglë grôüpës qùî vîrë lès lèttrës âvèç äcçënts
ç'èst gôrë àùssï.

Cordialement,
--
Olivier Miakinen
benoit.sansspam
Le #22862571
Olivier Miakinen
Bonjour,

Le 29/11/2010 14:45, Jean-Christophe a écrit :
>
>> Le HTTP ne le permet pas.
>
> Pourtant j'y arrive en laissant la socket ouverte

Cela revient à ce qu'écrivait Nicolas :

>> [...] (o le browser
>> envoie une requ te et le serveur tarde y r pondre), mais c'est gore.

Je suis du même avis : tarder à « r pondre » à la « requ te », c'est gore.

Ét cêt ïmbéçîlë dë Gôôglë grôüpës qùî vîrë lès lèttrës âvèç äcçënts
ç'èst gôrë àùssï.



J'irai plus loin et je retirerais des voyelles pour ne pas
prendre trop de bande passante :

l brwsr nvoi ne rqut et l srvr trd rpndr, ms c'st gr.







--
Benoît http://www.duvallois.com/

Avec des fumeurs c'est difficile de s'arrêter. Avec des branleurs,
là, par contre, c'est difficile de continuer.
Dominique Ottello
Le #22862991
(Benoit) écrivait :

J'irai plus loin et je retirerais des voyelles pour ne pas
prendre trop de bande passante :


Et puis on mélange un peu :

is vuos pvueoz lrie ccei, vuos aevz asusi nu dôrle de cvreeau. Seleuemnt
55 porsnenes sur cnet en snot cpalabes.

Je n'en cyoaris pas mes yuex que je sios cabaple de cdrpormendre ce que
je liasis. Le povuoir phoémanénl du crveeau huamin. Soeln une rcheerche
fiate à l'Unievristé de Cmabridge, il n'y a pas d'iromtpance sur l'odrre
dnas luqeel les lerttes snot, la suele cohse imotprante est que la
priremère et la derènire letrte du mot siot à la bnone palce. La raoisn
est que le ceverau hmauin ne lit pas les mtos par letrte mias ptuôlt
cmome un tuot. Étonannt n'est-ce pas? Et moi qui ai tujoours psneé que
svaoir élpeer éatit ipomratnt! Si vuss poevuz le lrie, fitaes le svirue
.


--
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant
Technologie aéronautique - http://ottello.net - Les anciens de Vilgénis
Le Forgeron
Le #22863111
Le 29/11/2010 14:19, Nicolas George nous fit lire :
Jean-Christophe , dans le message
écrit :
Je développe un serveur http avec les sockets windows,



Toutes mes condoléances.

et voudrais qu'aprés une première connection d'un browser
client au serveur (et réponse du serveur par l'envoi
d'une page html complète) le serveur puisse à sa propre
initiative rafraichir la page du browser client.



Le HTTP ne le permet pas.

On peut faire vaguement ça avec de l'AJAX et du COMET (où le browser envoie
une requête et le serveur tarde à y répondre), mais c'est gore.



Euh... et le HTTP server push, c'est quoi alors ?
Bon, c'est assez pénible, ça oblige le serveur à garder la connexion
ouverte et un CGI en route, mais le multipart/x-mixed-replace existe
depuis 1995... même si c'est désuet et moins sexy qu'une applet java...

Le mauvais coté, c'est que IE ne le supporte pas, comme d'hab'.

De toutes façons, si le serveur doit rafraichir le client, il
n'échappera pas à garder ouverte la connexion.
Alpha
Le #22864011
Le Mon, 29 Nov 2010 19:43:21 +0100, Dominique Ottello a écrit:

(Benoit) écrivait :

J'irai plus loin et je retirerais des voyelles pour ne pas
prendre trop de bande passante :


Et puis on mélange un peu :

is vuos pvueoz lrie ccei, vuos aevz asusi nu dôrle de cvreeau. Seleuemnt
55 porsnenes sur cnet en snot cpalabes.



Vieille rumeur quand tu nous tiens....


<http://www.lemonde.fr/cgi-bin/ACHATS/acheter.cgi?
offre=ARCHIVES&type_item=ART_ARCH_30J&objet_id‚1029&clef=ARC-TRK-NC_01>


Bon je ne vais pas m'abonner non plus ;)
Jean-Christophe
Le #22866561
On Nov 29, 3:27 pm, Pascal Hambourg

Voir du côté des fr.comp.infosystemes.www.*.



Merci, si je n'avance pas je tenterai par là-bas.
Jean-Christophe
Le #22866551
On Nov 29, 7:52 pm, Le Forgeron

Euh... et le HTTP server push, c'est quoi alors ?
Bon, c'est assez pénible, ça oblige le serveur à garder la connexio n
ouverte et un CGI en route, mais le multipart/x-mixed-replace existe
depuis 1995... même si c'est désuet et moins sexy qu'une applet java. ..
Le mauvais coté, c'est que IE ne le supporte pas, comme d'hab'.



C'est là qu'est l'os, hélas.
Je ne peux pas me permettre de restreindre à des browsers non-IE.

De toutes façons, si le serveur doit rafraichir le client,
il n'échappera pas à garder ouverte la connexion.



Exactement.
Donc pour l'instant j'en reste à ma solution.
Merci quand meme pour l'idée du push.
Publicité
Poster une réponse
Anonyme