Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Socket client/serveur.

10 réponses
Avatar
Jean-Christophe
Bonjour,

Je d=E9veloppe un serveur http avec les sockets windows,
et voudrais qu'apr=E9s une premi=E8re connection d'un browser
client au serveur (et r=E9ponse du serveur par l'envoi
d'une page html compl=E8te) le serveur puisse =E0 sa propre
initiative rafraichir la page du browser client.
Pour etre plus clair, voici le topo :

1: Le browser client envoie sa requ=E8te au serveur
( http://serveur/... )

2: Le serveur r=E9pond en retournant une page html.

3: Lors d'un =E9v=E8nement n=E9c=E9ssitant une mise =E0 jour,
le serveur renvoie au client une autre page html.

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

Pour l'instant j'ai trouv=E9 le truc suivant :
apr=E9s envoi de la page html le serveur laisse
ouverte la socket et, lorque c'est n=E9c=E9ssaire,
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=E9 serveur la socket doit rester ouverte,
et cot=E9 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 ?

10 réponses

Avatar
Nicolas George
Jean-Christophe , dans le message
, a
é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.
Avatar
Jean-Christophe
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 ?
Avatar
Pascal Hambourg
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.*.
Avatar
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ï.

Cordialement,
--
Olivier Miakinen
Avatar
benoit.sansspam
Olivier Miakinen <om+ wrote:

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.
Avatar
Dominique Ottello
(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
Avatar
Le Forgeron
Le 29/11/2010 14:19, Nicolas George nous fit lire :
Jean-Christophe , dans le message
, a
é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.
Avatar
Alpha
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 ;)
Avatar
Jean-Christophe
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.
Avatar
Jean-Christophe
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.