Dynamisk uppdatering av web-sidor.

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Dynamisk uppdatering av web-sidor.

Inlägg av sodjan »

Jag är lite intresserad av hur man åstakommer den typ av dynamisk
uppdatering som man t.ex kan se på http://bors.e24.com/
i rutan benämnd "Marknadsöversikt".

Är det kod i browsern som själv "hämtar" nya värden ? Eller är det någon
"push" teknik så att servern skickar ut nya värden regelbundet ?

Och om det är servern som "pushar" ut värderna, vad krävs det på server
sidan för att åstakomma detta (av t.ex web-servern) ?
Användarvisningsbild
hubben
Inlägg: 1754
Blev medlem: 7 september 2010, 11:46:58
Ort: Örviken

Re: Dynamisk uppdatering av web-sidor.

Inlägg av hubben »

Kolla upp begreppet AJAX...
Browsern hämtar data med jämna mellanrum..
X-IL
EF Sponsor
Inlägg: 8479
Blev medlem: 3 december 2008, 07:47:20
Ort: Hallstahammar

Re: Dynamisk uppdatering av web-sidor.

Inlägg av X-IL »

Jag gjorde på ett tidigare jobb ett enkelt chattsystem som var webbaserat. Där såg jag till att aldrig avsluta strömmen utan fyllde bara på varefter tiden gick och meddelanden kom in. Detta var i PHP. Men om man vill uppdatera annat(bilder, diagram etc) dynamiskt så finns det väl diverse tekniker färdigt (Java, JS, DHTML osv).
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Dynamisk uppdatering av web-sidor.

Inlägg av sodjan »

Java och JS är väl bara "språk" !?
Det jag är intresserad av hur själva server<->browser
kommunikationen går till.
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Re: Dynamisk uppdatering av web-sidor.

Inlägg av PHermansson »

Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46945
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Dynamisk uppdatering av web-sidor.

Inlägg av TomasL »

Enklast är väl

Kod: Markera allt

<meta http-equiv="refresh" content="sss"> 
där "s" är tid i sekunder
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Re: Dynamisk uppdatering av web-sidor.

Inlägg av PHermansson »

Men det laddar om hela sidan? Med Ajax kan man uppdatera enbart innehållet i en enskild div-tagg.
Nerre
Inlägg: 27201
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Dynamisk uppdatering av web-sidor.

Inlägg av Nerre »

Man kan göra en IFRAME, då funkar refresh.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Dynamisk uppdatering av web-sidor.

Inlägg av sodjan »

OK, jag kollar lite snabbt på Ajax. Jag hade fått för mig att det
hade kopplingar till Java/Javascript, men det kanske är mer
generellt än så. Hur som helst, är det alltså Ajax som sidan
jag länkade till använder ?
Zeela
Inlägg: 176
Blev medlem: 28 augusti 2008, 11:23:49
Ort: Åtvidaberg
Kontakt:

Re: Dynamisk uppdatering av web-sidor.

Inlägg av Zeela »

Jo, med största sannolikhet AJAX med JavaScript som sköter anropen till serven.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Dynamisk uppdatering av web-sidor.

Inlägg av sodjan »

OK.
Det finns ju även push tekniker där det enbart blir trafik server->browser
om det faktiskt finns något "att säga" så att säga. Pollning ger nästan alltid
en hel del onödig trafik, i alla fall om vill vill ha en rimlig svarstid när det
väl finns data tillgänglig.

Jag glömde att säga att detta i så fall skulle användas inom ett privat
företagsnät och jag har full kontroll över både server och klient sidan.

Jag antog faktiskt att det var någon slags push teknik som kördes
på sidan ovan eftersom "push" förekommer frekvent i sidans källkod.

Annan annan sak...
Någon som vet något verktyg för att "snygga till" Javascript kod som t.ex :
http://push.e24.com/files/js-api/1.4.1/mdg_js_api.js
så att det blir läsbart ?
Användarvisningsbild
PHermansson
EF Sponsor
Inlägg: 4340
Blev medlem: 22 december 2004, 00:46:38
Ort: Särestad Grästorp
Kontakt:

Re: Dynamisk uppdatering av web-sidor.

Inlägg av PHermansson »

Jag kollade lite på den koden, och den är inte trivial. Inte nått bra sätt att börja lära sig alltså :)
Koden i min länk ovan med klockan är däremot lagom för att få en uppfattning om hur det funkar och hur man gör.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46945
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Dynamisk uppdatering av web-sidor.

Inlägg av TomasL »

Någon som vet något verktyg för att "snygga till" Javascript kod som t.ex :
Notepad, sök och ersätt, typ
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46945
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Dynamisk uppdatering av web-sidor.

Inlägg av TomasL »

Kod: Markera allt

var MDG=new Object();

MDG.BaseConfig=function(){this._d=new Array();

	for(var H=0;H<arguments.length;H++)
	{if(arguments[H]!=undefined){this._d.push(arguments[H]);

	}}this._d.push(new Object());
	this._d.reverse();
	var setDocDomain=this.getBooleanProperty("SET_DOC_DOMAIN");
	if(setDocDomain){var Tn=document.domain.split(".").reverse();
		var MR=this.getIntProperty("DOC_DOMAIN_COMMON_PARTS");
		if(Tn.length>MR){Tn.length=MR;
			document.domain=Tn.reverse().join('.');
		}}};
		MDG.BaseConfig.prototype.getProperty=function(name,bQ){var c=this._d[0][name];
			if(c!=undefined){if(c=="_undefined_"){return bQ;
			}return c;
		}for(var H=1,b=this._d.length;
		H<b;
		H++){var d=this._d[H][name];
			if(d!=undefined){this._d[0][name]=d;
				return(d=="_undefined_"?bQ:d);
			}}return bQ;
		};
		MDG.BaseConfig.prototype.removeProperty=function(name){this._d[0][name]="_undefined_";
		};
		MDG.BaseConfig.prototype.getBooleanProperty=function(name,bQ){var S7=this.getProperty(name);
			if(S7==undefined){return bQ;
			}if(S7=="true"||S7=="TRUE"||S7=="1"){return true;
			}return false;
		};
		MDG.BaseConfig.prototype.getIntProperty=function(name,bQ){var k=this.getProperty(name);
			if(k==undefined){return bQ;
			}return parseInt(k);
		};
		MDG.BaseConfig.prototype.getNumberProperty=function(name,bQ){var k=this.getProperty(name);
			if(k==undefined){return bQ;
			}return Number(k);
		};
		MDG.BaseConfig.prototype.setProperty=function(name,value,QI){if(this._d.length==0){return false;
		}if(QI==undefined){QI=true;
		}if(QI){this._d[0][name]=value;
			return true;
		}if(this.getProperty(name)!=undefined){return false;
		}this._d[0][name]=value;
		return true;
	};
	MDG.BaseConfig.prototype.getPropertyNames=function(){var sZ=new Array();
		var KP=new Object();
		for(var H=0,b=this._d.length;
		H<b;
		H++){for(d in this._d[H]){KP[d]=d;
		}}for(S7 in KP){sZ.push(S7);
		}return sZ;
	};
	String.prototype.startsWith=function(q9){return(this.indexOf(q9)===0);
	};
	String.prototype.endsWith=function(q9){var O=this.lastIndexOf(q9);
		if(O<0){return false;
		}return(O==(this.length-q9.length)?true:false);
	};
	String.prototype.findFirstNotOf=function(q9){var b=this.length;
		for(var H=0;
		H<b;
		H++){if(this.charAt(H)!=q9){return H;
		}}return-1;
	};
	String.prototype.firstLines=function(Uo){if(Uo==undefined){Uo=1;
	}var O=-1;
	for(var H=0;
	H<Uo;
	H++){O=this.indexOf("\r\n");
		if(O<0){O=this.indexOf("\n\r");
		}if(O<0){O=this.indexOf("\n\r");
		}if(O<0){O=this.indexOf("\r");
		}if(O<0){O=this.indexOf("\n");
		}}if(O>-1){return this.substring(0,O);
		}return this;
	};
	String.prototype.equals=function(Dl){if(Dl.length!=this.length){return false;
	}for(var H=0;
	H<this.length;
	H++){if(this.charAt(H)!=Dl.charAt(H)){return false;
	}}return true;
};
String.prototype.countTrailing=function(q9){var b=q9.length;
	if(b!=1){return 0;
	}var s=0;
	for(var H=this.length-1;
	H>=0;
	H--){if(this.charAt(H)==q9){s++;
	}else{return s;
	}}return s;
};
String.prototype.trimWithSuffix=function(maxLength,Z9){if(this.length<=maxLength){return this;
}if(Z9==undefined){Z9="...";
}var qr=this.substr(0,maxLength-Z9.length);
return qr+Z9;
};
ANvände UltraEdit

Sök och ersätt ; med ;^n (dvs ny rad efter varje semikolon)
sedan AutoIntendent.
Tog ca 30 s
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Dynamisk uppdatering av web-sidor.

Inlägg av sodjan »

> ANvände UltraEdit

Kör också UE (unlim upgrade license) och det var just vad jag hade
tänkt att testa. :-) Men OK, tack i alla fall.

> Koden i min länk ovan med klockan är däremot lagom för att få en uppfattning om hur det funkar och hur man gör.

Men det är fortfarande en poll/pull lösning som alltså ger trafik även
om det inte behövs (p.g.a att värderna på servern inte har ändrats).
Det är det som jag försöker komma ifrån och det är väl det som
push-lösningarna undviker.

Säg att jag har 20 klienter som visar samma data. Det blir lite skillnad på
att ha 20 st vanliga get/post anrop per sekund mot servern, mot att ha en
serverprocess som skickar ut samma data till 20 klienter samtidigt när det
behövs (kanske var 5-10 sekund ungefär). Problemet är det att samtidigt
som händelserna på servern kanske inträffar med 5-10 sek intervall, så
vill jag att bilden uppdateras utan "onödig" fördröjning, säg inom ca 1 sek.

Aja, får fundera vidare. Man har ju en sysslolös helg framför sig... :-)
Skriv svar