/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Data push (og ikke det normale HTML pull)
Fra : Allan Jensen


Dato : 31-05-01 07:14

Jeg kunne godt tænke mig holde forbindelsen fra serveren til browser
åbent i et længere stykke tid sådan at jeg kan sende ny information
til browseren når det kommer. Jeg ved godt det skriger imod hele
http-protokollen, men lad os nu droppe den diskussion.

Det handler altså om ikke at afslutte afsendelsen af siden fra
serveren og kunne opdatere (dvs. overskrive) data allerede skrevet i
browseren. Og det skal være ren HTML og JavaScript.

Nogen der ved hvor jeg kan finde info om dette?

Jeg ved det kan lade sig gøre - se f.eks. www.netmechanic.com og test
en HTML side.

Regards,
Allan Jensen

 
 
Peter Lykkegaard (31-05-2001)
Kommentar
Fra : Peter Lykkegaard


Dato : 31-05-01 10:05


"Allan Jensen" <public@hverdag.dk> wrote in message
news:ffnbhtgnspogaa77tl84k485a370d41grs@4ax.com...

Mener du ikke data _pull_ ??

> Jeg kunne godt tænke mig holde forbindelsen fra serveren til browser
> åbent i et længere stykke tid sådan at jeg kan sende ny information
> til browseren når det kommer. Jeg ved godt det skriger imod hele
> http-protokollen, men lad os nu droppe den diskussion.

Det er klienten der checker serveren løbende - svjv
>
> Det handler altså om ikke at afslutte afsendelsen af siden fra
> serveren og kunne opdatere (dvs. overskrive) data allerede skrevet i
> browseren. Og det skal være ren HTML og JavaScript.

Der vist nogle småting du lige skal læse op først
Du kan ikke sende noget fra serveren som en død html side kan reagere på
>
> Nogen der ved hvor jeg kan finde info om dette?
>
Du fx starte med at læse om remote recordsets (eller hvad det nu hedder)
Muligvis "Channel" kan noget at det du ønsker

Men hele tiden er det klienten der kender en server/har en forbindelse åben
til denne, og undersøger om der er noget nyt at hente

Anyone

mvh/Peter Lykkegaard



Jesper West Ørngreen (31-05-2001)
Kommentar
Fra : Jesper West Ørngreen


Dato : 31-05-01 21:24

On Thu, 31 May 2001 11:04:39 +0200, "Peter Lykkegaard" <polonline@hot.mail.com>
wrote:

> Det er klienten der checker serveren løbende - svjv

[snip]

> Men hele tiden er det klienten der kender en server/har en forbindelse åben
> til denne, og undersøger om der er noget nyt at hente
>
> Anyone

Korrekt - og der er efterhånden flere løsninger på hvordan det kan styres.

En af de (imho) mere elegante løsninger er brugen af Remote Scripting, som faktisk er
rørende simpelt at anvende.

Det består af en serverSide ASP fil, et clientSide Javascript samt en JavaApplet som
inkluderes på html siden (usynlig for brugeren - APPLET tagget kan ikke engang ses i
"Vis Kilde")

Og Voila - Nu kan ClientSide javascript kalde ASP metoder på serveren og få
resultatet tilbage UDEN at hele siden refresh'es. Det er endda muligt at få en
ASPobjekt-reference, og så bruge methods/properties på objektet selvom det ligger og
kører på serveren

Jeg har dog kun "leget" med det - dvs. har ikke testet hvilket perfomance-hit man
får, ved brug på et større site.


--
Mvh

Jesper Ørngreen admin@orngreen.dk
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Always remember you are unique - just like everybody else

Allan Jensen (01-06-2001)
Kommentar
Fra : Allan Jensen


Dato : 01-06-01 09:19

>Mener du ikke data _pull_ ??

Hmmmm, jeg er godt nok ikke helt sikker på begreberne og sån, men jeg
vil da godt nok stadig mene at det er push jeg er ude efter. Det er
serveren som skal push'e data ud til browseren. Http-protokollen er jo
tilstandsløs (som jeg har hørt det sagt) - det er jo derfor vi har
cookies som "lappeløsning" på at holde styr på klienterne fra gang til
gang de henvender sig.

>> Jeg kunne godt tænke mig holde forbindelsen fra serveren til browser
>> åbent i et længere stykke tid sådan at jeg kan sende ny information
>> til browseren når det kommer. Jeg ved godt det skriger imod hele
>> http-protokollen, men lad os nu droppe den diskussion.
>
>Det er klienten der checker serveren løbende - svjv

Jeg er nu ikke helt enig, men spørgsmålet er om det bare er en
begrebsmisforståelse. Men en ting er sikkert - det er altid browseren
der sender forespørgslen til serveren om en eller anden fil eller
whatever. Hvis en server har ny information kan den jo ikke bare sige
at nu vil jeg altså sende det til klient. Klienten skal først
forespørge om at få vist den side hvor informationen så står på.

>> Det handler altså om ikke at afslutte afsendelsen af siden fra
>> serveren og kunne opdatere (dvs. overskrive) data allerede skrevet i
>> browseren. Og det skal være ren HTML og JavaScript.
>
>Der vist nogle småting du lige skal læse op først
>Du kan ikke sende noget fra serveren som en død html side kan reagere på

Nej, men det kan javascriptet vel... hvis du ser på
www.netmechanic.com så er det ren javascript så vidt jeg kan se...

Regards,
Allan Jensen

Martin Mouritzen (01-06-2001)
Kommentar
Fra : Martin Mouritzen


Dato : 01-06-01 10:00

After I finished the 3 Pan Galactic Gargle Blasters, Allan Jensen
<public@hverdag.dk> just offered me, he muttered some weird stuff, and
I had to correct this gibberish:

>Hmmmm, jeg er godt nok ikke helt sikker på begreberne og sån, men jeg
>vil da godt nok stadig mene at det er push jeg er ude efter. Det er
>serveren som skal push'e data ud til browseren.

Det er også muligt hvis du f.eks. holder forbindelsen åben. Dette
kræver dog helt sikkert noget ServerSide indblanding.

Opasia (Pil.dk?) gør det f.eks. på deres nye chat, den ligger på
<URL:http://nychat.opasia.dk>
--
Venlig hilsen / Best regards
Martin Mouritzen - martin@eisenstein.dk
Eisenstein - http://www.eisenstein.dk

Jesper West Ørngreen (01-06-2001)
Kommentar
Fra : Jesper West Ørngreen


Dato : 01-06-01 10:21

On Fri, 01 Jun 2001 10:18:44 +0200, Allan Jensen <public@hverdag.dk> wrote:

> >Mener du ikke data _pull_ ??
>
> Hmmmm, jeg er godt nok ikke helt sikker på begreberne og sån, men jeg
> vil da godt nok stadig mene at det er push jeg er ude efter.

[snip]...

> Nej, men det kan javascriptet vel... hvis du ser på
> www.netmechanic.com så er det ren javascript så vidt jeg kan se...


Jeg gætter på at du hentyder til den ProgressBar der vises inden resultatet er
færdigt til fremvisning?

I så fald er det nemlig rent "push" fra serverens side.

på siden er der en række billeder navngivet "percent05","percent10","percent15",osv -
som tilsammen udgør den blå ProgressBar
(i starten er alle "percentXX" billeder hvide)

Der er placeret et script i toppen af siden med funktionen "PercentDone(k,f)" Som
beregner hvilke/hvormange af "percentXX" billederne der skal være blå i stedet for
hvide.

Når serveren går i gang med check-arbejdet, bruger den en teknik der svarer til ASP's
Buffer=true sammen med en flush, hver gang en ny "procentdel" af arbejdet er udført.

Det det Flush'es til clienten er endnu et javascript, der kalder funktionen
"PercentDone" med parametre der angiver hvor langt vi er nået.

I forkortet udgave ser deres kode således ud:

FLUSH N
-------------------------------------------
<SCRIPT language="JavaScript">
   PercentDone(8,1);
</SCRIPT>

FLUSH N + 1
-------------------------------------------
<SCRIPT language="JavaScript">
PercentDone(13,1);
</SCRIPT>

Hvert nyt javascript der flush'es kalder altså "PercentDone" funktionen, som så
ændrer udseenet af progressBar - Simpelt og lidt klodset - men det virker


--
Mvh

Jesper Ørngreen admin@orngreen.dk
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Always remember you are unique - just like everybody else

Allan Jensen (01-06-2001)
Kommentar
Fra : Allan Jensen


Dato : 01-06-01 14:45

>> >Mener du ikke data _pull_ ??
>>
>> Hmmmm, jeg er godt nok ikke helt sikker på begreberne og sån, men jeg
>> vil da godt nok stadig mene at det er push jeg er ude efter.
>
>[snip]...
>
>> Nej, men det kan javascriptet vel... hvis du ser på
>> www.netmechanic.com så er det ren javascript så vidt jeg kan se...
>
>
>Jeg gætter på at du hentyder til den ProgressBar der vises inden resultatet er
>færdigt til fremvisning?

Ja lige præcis den.

>Når serveren går i gang med check-arbejdet, bruger den en teknik der svarer til ASP's
>Buffer=true sammen med en flush, hver gang en ny "procentdel" af arbejdet er udført.
>
>Det det Flush'es til clienten er endnu et javascript, der kalder funktionen
>"PercentDone" med parametre der angiver hvor langt vi er nået.

[snip]

Det lyder meget rigtigt og fornuftigt....

>Hvert nyt javascript der flush'es kalder altså "PercentDone" funktionen, som så
>ændrer udseenet af progressBar - Simpelt og lidt klodset - men det virker

....og simpelt ja. Det kan være jeg skal prøve og gå igang med at lave
et eksempel.....

Regards,
Allan Jensen

Jesper West Ørngreen (01-06-2001)
Kommentar
Fra : Jesper West Ørngreen


Dato : 01-06-01 21:30

On Fri, 01 Jun 2001 15:44:46 +0200, Allan Jensen <public@hverdag.dk> wrote:

> ...og simpelt ja. Det kan være jeg skal prøve og gå igang med at lave
> et eksempel.....

Jamen du kan da få et her



<html>
<head>
   <title>ProgressBar</title>
<style>
      .preLoader {border: 1 solid #000000; margin: 15% }
      .dok { visibility : hidden }
      .bar { color: #FFFFFF; background-color: #0000FF; text-align: right }
   </style>
   <SCRIPT type="text/javascript">
      function progress(intPct) { bar.style.width=intPct + "%"; bar.innerHTML=intPct
+ "%" }
      function loaded() { preLoader.style.display = "none"; dok.style.visibility =
"visible" }
   </SCRIPT>
</head>
<body>

<div id="preLoader" class="preLoader">Page is loading - please wait...<br>
   <span id="bar" class="bar">xxx</span>
</div>

<div id="dok" class="dok">
   <h1>Preloader eksempel</h1>
   <p>bla bla bla bla bla bla bla </p>
   <p>bla bla bla bla bla bla bla </p>
   
   <SCRIPT type="text/javascript">progress(8)</SCRIPT>

   <p>bla bla bla bla bla bla bla </p>
   <p>bla bla bla bla bla bla bla </p>
   <p>bla bla bla bla bla bla bla </p>

   <SCRIPT type="text/javascript">progress(22)</SCRIPT>

   <p>bla bla bla bla bla bla bla </p>
   <p>bla bla bla bla bla bla bla </p>
</div>


<SCRIPT type="text/javascript">
   // Følgende er for at demonstrerer preload'eren da jeg ikke
   // gad lave et stort tungt dokument til eksemplet
   setTimeout("progress(36)",1000)
   setTimeout("progress(57)",2000)
   setTimeout("progress(75)",3000)
   setTimeout("progress(90)",4000)
   setTimeout("loaded()",5000)
</SCRIPT>

</body>
</html>


--
Mvh

Jesper Ørngreen admin@orngreen.dk
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Always remember you are unique - just like everybody else

Jesper West Ørngreen (01-06-2001)
Kommentar
Fra : Jesper West Ørngreen


Dato : 01-06-01 21:32

On Fri, 01 Jun 2001 20:29:51 GMT, admin@orngreen.dk (Jesper West Ørngreen) wrote:

[snip]

HRRMPFHH... Pas lige på min newsreaders linieombrydningshærgen i koden :(

sorry


--
Mvh

Jesper Ørngreen admin@orngreen.dk
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Always remember you are unique - just like everybody else

Allan Jensen (06-06-2001)
Kommentar
Fra : Allan Jensen


Dato : 06-06-01 20:06

>[snip]
>
>HRRMPFHH... Pas lige på min newsreaders linieombrydningshærgen i koden :(

Tihi - hvis ikke vi har større problemer end det skal vi vist være
glade.... :)

Regards,
Allan Jensen

Allan Jensen (06-06-2001)
Kommentar
Fra : Allan Jensen


Dato : 06-06-01 20:06

>> ...og simpelt ja. Det kan være jeg skal prøve og gå igang med at lave
>> et eksempel.....
>
>Jamen du kan da få et her

[snip]

Orvs manner - takker - det vil jeg prøve.

Regards,
Allan Jensen

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408528
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste