Hur gör man så att en hemsida blir "interaktiv" och "uppdaterar" sig själv? Ajax?

Permalänk

Hur gör man så att en hemsida blir "interaktiv" och "uppdaterar" sig själv? Ajax?

Hejhej

Vi håller på att utveckla ett litet forum i en kurs på skolan som heter TDDI15 (aka TDDD24). Vi använder Eclipse, Java och GWT. Sen tänkte vi att forumet ska uppdateras automatiskt om någon skickar ett inlägg. (Dvs man slipper trycka på F5, "Refresh page" alltså. Eller slippa trycka på en Button-knapp som uppdaterar trådlistan som visas)
Gmail inkorgen kan ju uppdateras automatiskt, och när man skriver ett mejl så sparas det automatiskt.

Hur kan man implementera så att den upptarerar automatiskt på ett bra sätt? Att skicka hela listan på trådar var 5:e sekund kanske inte blir så optimalt. Tänk om 1000 datorer i ett LAN är inne på samma hemsida, och det är 1000 trådar på ett forum och alla får uppdateringar var 5 sekund. Då blir det ju inte så optimalt.

Så hur kan man göra egentligen? Ska man verkligen ha en Timer i java som hämtar en ny t ex tråd-lista? Kanske det finns något enkelt sätt? Jag hörede GWT bygger på Ajax. Så då kanske GWT har någon sofistikerad lösning?

Visa signatur

PC: Windows 10 Pro x64 | ASUS Z270 ROG MAXIMUS IX CODE | Intel i7 7700K 4.2 GHz | Crucial 2x8GB@2400MHz | ASUS GeForce GTX 1070 8GB DUAL OC | Samsung 960 EVO 500GB | WD Red 2TB | Corsair TX650M 650W | Deepcool Tesseract ATX

Permalänk
Medlem

Java har nog inte använts på hemsidor på mååånga år nu. Javascript däremot.
Och varför man skulle göra en hemsida i Eclipse kan jag inte ens komma på någon anledning till.

Men vidare till frågan så torde det vara något slags script som kan polla servern på bara nya saker och sedan uppdatera hemsidan dynamiskt. Låter som en schemalagd javascript funktion enligt mig.

Visa signatur

/dev/null

Permalänk
Medlem

Finns massvis med sidor skrivna i Java där ute T.ex. en jag känner på rak arm är t.ex. http://www.ticket.se/ som har sin frontend (själva web sidan) bland annat i Java.

Det sagt, vad för backend du använder är oftast ganska irelevant om du ska göra en interaktiv sida.

--

Jag rekommenderar dig att du pollar var 10-30 sekund, ( hur viktigt är det att det dyker upp hela tiden? ) Och det du skickar är senaste inlägget tid ( eller id ) och kollar ifall det finns något nytt, finns det något nytt skicka tillbaka ett objekt med de nya inläggen samt ny tid att kolla mot.

Är detta för mycket på en gång så kan du alltid skicka tillbaka hela sidan igen varje gång en uppdatering skett, men gör det bara ifall en uppdatering skett, men som sagt va, bäst ifall du skickar enbart förändringar.

Dessa pollar är det viktigt att du har en 10 sekunder efter svaret du fått från servern, och inte var 10 sekund. Varför detta är viktigt är ifall din server börjar bli långsam. T.ex. det tar 12 sekunder plötsligt att hämta en sida, vad som händer då är att du köar upp requests efter requests. Vist troligtvis inte så troligt om du har en 10 sekunders delay men sitter den på 1 sekund så är detta väldigt vanligt fenomen.

DVS använd alltid setTimeout!
http://stackoverflow.com/questions/729921/settimeout-or-setin...

Visa signatur

Speldator: Ryzen 7800X3D, 64GB DDR5, RTX 5090
Server: i7-8700k, 32GB DDR4, RTX2080
Steam deck, Rog Ally + de fiesta konsoler.

Permalänk
Medlem

Kan inte heller förstå varför man skulle göra detta i Java...

Ett vanligt sätt är att använda sig av AJAX polling, även om Javascript kanske är att föredra då det belastar servern mindre.

Ramverket Meteor är ett riktigt bra alternativ här, då du programmerar element på sidan (snarare än funktioner och rutiner). Det uppdaterar dessutom sidan i realtid, vilket gör att du slipper använda t.ex. AJAX...

Permalänk
Medlem

Och ajax är inte javascript menar du?

Du bör skicka postens content (och parametrar) med ajax, få tillbaka ett JSON objekt, och sen uppdaterar du DOMen (appendar) det nya resultatet, förslagsvis via jquery template.

Java använder man till backend-kod, istället för PHP eller C# etc. Rätt vanligt.

Permalänk
Medlem

Har inte hunnit koll på det något alls, men är inte websockets tänkt att vara en lösning till smutsig polling?
http://www.html5rocks.com/en/tutorials/websockets/basics/

Permalänk
Medlem
Skrivet av BasseBaba:

Har inte hunnit koll på det något alls, men är inte websockets tänkt att vara en lösning till smutsig polling?
http://www.html5rocks.com/en/tutorials/websockets/basics/

WebSockets är inte ens HTTP, den använder bara det för att upprätta anslutningen. Det är "bara" ännu ett protokoll för att skicka data över webben.
Det är rätt nytt och kommer säkerligen inte användas för ersättare för javascript osv. för dynamisk content på webben.
Det kan däremot möjliggöra bättre applikationer som körs i webbläsaren.

Permalänk
Medlem
Skrivet av Sidde:

WebSockets är inte ens HTTP, den använder bara det för att upprätta anslutningen. Det är "bara" ännu ett protokoll för att skicka data över webben.
Det är rätt nytt och kommer säkerligen inte användas för ersättare för javascript osv. för dynamisk content på webben.
Det kan däremot möjliggöra bättre applikationer som körs i webbläsaren.

Ja, fast det är väl kanon. Då behöver man ju inte polling, utan kan skicka saker från server till klient så som jag förstår det, måste ta ett närmre span.

Meteor såg ju ballt ut, har inte hunnit kolla, men hur funkar syncen där? Kan den också köra någon sorts sockets, så att den slipper polling?
Som exemplet här, som tyvärr bara är en video såvida man inte själv orkar installera och deploya:
http://meteor.com/examples/leaderboard

Permalänk
Medlem
Skrivet av BasseBaba:

Ja, fast det är väl kanon. Då behöver man ju inte polling, utan kan skicka saker från server till klient så som jag förstår det, måste ta ett närmre span.

Meteor såg ju ballt ut, har inte hunnit kolla, men hur funkar syncen där? Kan den också köra någon sorts sockets, så att den slipper polling?
Som exemplet här, som tyvärr bara är en video såvida man inte själv orkar installera och deploya:
http://meteor.com/examples/leaderboard

Server och klienten kan upprätta egna förbindelser ja, men det är egentligen inget revolutionerande med det. Har ju gjorts med tio/hundratals andra plugins till webbläsare som javaapplets, flash, silverlight osv. Med detta blir webbläsaren en fetare klient utan plugins, och det har både sina för och nackdelar. Däremot kan det slå igenom och ersätta flash, javapplets osv. som fortfarande förekommer alldeles för mycket fortfarande trist nog.

Jag kan tycka det vore bra att separera webbläsarens "passiva" klient och möjligheten till websockets genom plugins eller andra metoder. Räcker med ett säkerhetshål i webbläsarens websockets och plötsligt har du en tjänst uppe på klienten redo att ansluta till och uttytja.

Permalänk
Medlem

Det finns ingen riktig "push", allt är olika varianter av polling, så vitt jag vet.

Permalänk
Medlem
Skrivet av Ernesto:

Det finns ingen riktig "push", allt är olika varianter av polling, så vitt jag vet.

Data som kommer från en server utan att en klient har initierat en transfer "pushas" till klienten. Med websockets får du en full-duplex-kanal till en server. Kopplingen hålls oftast öppen för att servern ska kunna skicka data till klienten utan att den ber om det.

Visa signatur

Kom-pa-TI-bilitet