anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Do 28 Mär, 2024 11:29

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Dieses wehleidige Thema.
BeitragVerfasst: Mi 01 Dez, 2010 14:05 
Offline
Freak
Freak
Benutzeravatar

Registriert: Di 01 Mai, 2007 13:57
Beiträge: 1634
Wohnort: Dortmund.
Geschlecht: Männlich
LoGD: Lokal.
Skype: josh.hoiul
Vielleicht kriegen wir ja hier mal eine Diskussion zustande, in der alle Pro- und Kontrapunkte, sowie Fragen rund um einen Ajax-Chat beantwortet und niedergeschrieben werden.

Seit Urzeiten ist es nun im Gespräch. Der selbst aktualisierende "LotGDchat". Umgesetzt haben ihn, soweit ich weiß, bisher Kevz und Dragonslayer (Bzw. die Atrahor-Entwickler). -DoM hat wohl auch so eine Art Chat, allerdings nicht selbst aktualisierend sondern nur einen "Aktualisieren"-Button, der die Kommentare neu lädt, ohne die Seite neuzuladen.

Da es mit den heutigen Javascript Frameworks kein Problem mehr darstellt, einen HTTPRequest abzusetzen, ist es durchaus denkbar einen selbst aktualisierenden "LotGDchat" zu schreiben. Ich selbst habe auf XAMPP auch einen. Allerdings hat der auch noch seine Macken.

Als Javascript Framework würde ich jQuery empfehlen. Man kann sich schnell einarbeiten, es gibt dazu noch einige Ui-Templates und es ist sehr umfangreich.
Die momentane jQuery Version soll allerdings / angeblich die Finale und somit letzte sein.

    Pro:
  • Der Chat ist nun selbst aktualisierend.
  • Eventuell begeistert dies die User und zieht womöglich neue an.
  • Man könnte ein erweitertes NPC-System einbauen. (Natürlich kann man dies nun auch schon, allerdings.. finde ich es mit Aktualisierung besser. z.B. könnte man "Vio" / "Violeta" mit /vio oder /Violeta ein wenig Leben einhauchen. Das die dem User z.B. ein Alé bringt und auch wirklich Gold verlangt. So habe ich es z.B. grad auf Xampp.)
  • Dieses uralte Thema ist letztendlich doch beendet und gelöst worden.

    Kontra
  • Wahrscheinlich immenser Anstieg des Traffic-Verbrauchs.
  • Möglicherweise gibt es unzufriedene User, die den Request Chat nicht nutzen wollen und deshalb ein wenig Stunk machen.
  • Browser Inkompatibilität nicht ausgeschlossen.
  • Bei manchen Usern könnte der Browser nun für wenige Sekunden "einfrieren" oder "stocken".

Traffic: Angenommen wir lassen den Chat.. alle 10 Sekunden aktualisieren. Wie viel würde sich der Traffic hier nun erhöhen? (Angenommen 20 User betreiben RP.)
Traffic²: Wäre es nun sinnvoller die Kommentare in Textdateien zuspeichern? Wäre zumindest Zeit- und meines Erachtens nach auch Traffic schonender als immer wieder eine Verbindung zu MySQL aufzubauen.

Auslagerung der Dateien: Das Kommentarsystem sollte im besten Falle als "Class" (OOP) geschrieben sein. Sollten wir nun bei der Datenbank bleiben, lassen wir die alte dbwrapper mit einspringen oder wechseln wir rüber nach PDO? PDO ist generell gesehen etwas langsamer als die mysql_*-Funktionen. Allerdings könnten wir uns durch PDO diverse "db_querys" / "mysql_querys" sparen.

----

Grundgedanke dieses Threads? Erarbeiten einer eventuell funktionierenden Idee eines Ajax Chats'. Allerdings nicht die Umsetzung in diesem Sinne. Eher im Sinne von: Jemand möchte sich einen Ajax Chat bauen, weiß aber nicht wie usw. So öffnet er diesen Sammelthread und liest es nach. Freue mich auf produktive Antworten.

My'

_________________
Never change a running system. Bullshit! ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Dieses wehleidige Thema.
BeitragVerfasst: Mi 01 Dez, 2010 16:26 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Wehleidiges Thema? Eigentlich ist es kein Problem, meine "Much-in-one" an Ajax anzupassen. Ganz ehrlich? Den Support für Ajax hab ich vor der veröffentlichung der "neusten" Version rausgeschnitten.

Deine Bedenken und "Lösungen" punkto Traffic sind... naja, ziemlicher Unsinn. Der Anstieg des Traffics beschränkt sich bei optimaler Programmierung maximal auf HTTP HEAD-Requests, wo der Server dann ein "zuletzt geändert" zurückgibt - oder (wie ich es umgesetzt habe) auf HTTP-GETs auf die Uhrzeit der letzten Änderung. Die Erhöhung des Traffics? Praktisch nicht vorhanden. Alle 10s manuell auf "Aktualisieren" klicken verursacht den grösseren Traffic.

Kommentare in Textdateien speichern um Traffic zu sparen? Hast du überhaupt eine Ahnung davon, was Traffic ist? Wenn der Datenbankserver auf dem Webserver läuft, dann beschränkt sich der Traffic zwischen Web- und Datenbankserver auf lokale sockets oder, je nach Einstellung, auf Serverinterne Client-Server-Kommunikation. Traffic: 0. Das einzige, was bedenklich wäre, und vermutlich auch das ist, was du meinst, sind die Zugriffe auf die Datenbank - da würde ein Cache-System tatsächlich Linderung verschaffen.

PDO vs dbwrapper? Wenn du schon in LoGD programmierst, dann doch über eine Einheitliche Schnittstelle. Das heisst - dbwrapper. Oder du schreibst ganz LoGD um. Und mit PDO sparst du zwar mysql_query, dafür hast du (etwas) kompliziertere Verwaltung der Objekte.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Dieses wehleidige Thema.
BeitragVerfasst: Mi 01 Dez, 2010 17:44 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
jQuery und JS-Frameworks
Die aktuelle Version ist zur Zeit ja die 1.4.4 und in 2 Monaten soll ungefähr die Version 1.5 erscheinen. Zudem sprechen sie in der Roadmap von späteren Änderungen (nicht in der 1.5), also glaube ich kaum, dass jQuery in nächster Zeit so belassen wird.

1.4.4 ist vermutlich einfach die final-Version des 1.4-Versionzweiges.

Aus meiner Erfahrung kann man Ajax-Anwendungen übrigens einfacher mit Prototype umsetzen als in jQuery. Brauchte für mich jedenfalls nur einen Bruchteil der Zeit.

Schlussendlich ist das mit dem Javascript-Framework aber wohl nur eine Frage des Geschmacks und der effektiven Anwendung.

(Und was wäre mit xAjax?)

NPC
Ich seh da ehrlich gesagt den Zusammenhang nicht ganz.
Aus meiner Sicht hat Ajax nur begrenzt etwas mit der Funktionalität an sich zu tun -Ajax ist für mich eher "User-Interface-Design"

Egal ob Ajax im UI oder nicht - Die Business-Logik sollte sich nicht verändern.(MVC)

User
Wenn du dich an Usern die Stunk machen störst, dann ignorier sie, oder aber lass auch noch eine Non-Ajax-Version laufen.

Inkompatibilität
Um dies Umgehen zu können ist die bereits oben erwähnte Non-Ajax-Version beinahe unabdingbar.

Traffic²
Solange es sich nicht gerade um eine SSD-Platte handelt und du deine Datenbank nicht absolut verplant hast, wird dir das Speichern der Werte in einer Text-Datei wohl nur wenig bringen. Geschicktes Caching mal ausgeschlossen.

Datenbank
Wenn du schon etwas anderes anschauen möchtest, so will ich dir auch Pear::MDB2 ans Herz legen. Aber sowohl MDB2 als auch PDO finde ich in LoGD übertrieben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Dieses wehleidige Thema.
BeitragVerfasst: Mi 01 Dez, 2010 18:03 
Offline
Meister
Meister
Benutzeravatar

Registriert: Mo 05 Feb, 2007 12:33
Beiträge: 375
Wohnort: Hattingen
Geschlecht: Männlich
LoGD: http://www.alvion-logd.de/logd/
Ich habe auch schon darüber nachgedacht, ob ich mich an eine Ajax-Umsetzung heran wage. Doch stellt sich mir die Frage wie wichtig ist das für RP-Spieler? Wie viel Zeit braucht ein durchschnittlicher RPler um einen halbwegs ansprechenden Kommentar zu schreiben? Doch sicher irgendetwas zwischen fünf und fünfzehn Minuten, eher mehr. Wie viel Wert bringt es da alle 10 oder 20 Sekunden "Nichts" aktualisert zu bekommen? Nach diesem Gesichtpunkt bleibt dann nur noch der Traffic- und Zeitvorteil beim Aktualisieren, da nur Teile der Seite übertragen werden.
Und kann ich damit neue Spieler anlocken und/oder alte Spieler halten? Ich denke es gehört mehr dazu als ein programmtechnischer Gimmick. Der Spieler muss sich wohl fühlen im Dorf, dann wird er bleiben, und er wird durch Mundpropaganda neue Leute zu deinem LoGD locken.

Das ist meine aktuelle Meinung zu diesem Thema, womit ich aber keinesfalls sagen will dass ich grundsätzlich dagegen bin. Nur die Aufwand/Nutzen Bilanz bringt mich zu dem Schluss, dass es besser ist zuvor andere Projekte ins Ziel zu nehmen. ;)

Btw: Rikka hat auch noch einen funktionierenden Ajax-Chat. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Dieses wehleidige Thema.
BeitragVerfasst: Do 02 Dez, 2010 00:43 
Offline
Profi
Profi

Registriert: Mo 20 Apr, 2009 00:30
Beiträge: 125
Ich kann mich nur Eliwood anschließen und geh sogar ein Schritt weiter:

Anstatt Threads zu öffnen wo du versucht mit nicht vorhandenem Wissen eine Diskussion anzuregen.
(Leute die noch weniger Ahnung haben könnten sich dies sogar noch als Fachwissen aneignen wollen!)
Wirklich damit tust du weder dir noch anderen Anfängern onBoard einen gefallen.

Versteh mich nicht falsch ich finde es immer gut, wenn Leute auf ein Ziel hinarbeiten.
Aber dann sollte man demutig genug sein einfach direkt zu fragen das man gerne was machen würde, aber sein Wissen nicht ausreicht.
Als zu versuchen es als sachliche Diskussion zwischen "Leute auf gleicher Ebene" zu tarnen.

So um mich sachlich an der Diskussion zu beteiligen:

Ein Ajax chat sieht so aus: (alles in pseudo Code kein echtes JS oder PHP da ich gerade keine Lust hab das auszuarbeiten. Und es eh bei jedem JS Framework bzw Lotgd version anders aussehen wird.)

html:

$this->bbcode_second_pass_code('', '<div id="chat"></div>
<div id="reload" style="visibility:none;"><img src="img/spinning.gif" /></div>')

js:

$this->bbcode_second_pass_code('', 'timer.setTimer("request",15); // alle 15 sek die funktion request ausführen

function request()
{
#('reload').style("visibility","block");
var request = Ajax.jsonrequest(jsonrequest.php?ort=demoOrt&token=zsdf7sdzh8s7dzf8zsdf7z87dsfz&randomkey=4563245);
if(request ended without error)
{
#('reload').style("visibility","none");
#('chat').Append(request->chat);
}

}')

php:
jsonrequest.php

$this->bbcode_second_pass_code('', '//security check über token und random key kommt hier hin
//übersprungen

//getvariablen abfangen

//user loggedin und rechte abfragen

$lasttime = $_SESSION['lasttime'];
$_SESSION['lasttime'] = time();
$result = db_query("SELECT * FROM commentary WHERE time > ".$lasttime." bla bla und ort = $ort und so weiter und so fort");

ein json object per php generieren super einfach...

outputraw(json);
')

das war es auch schon das wunder eines ajax chats grob skiziert in 5 Minuten.

Und so eine Lösung verursacht deutlich weniger Traffic als ein F5 reload.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Dieses wehleidige Thema.
BeitragVerfasst: So 05 Dez, 2010 12:59 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Ich bevorzuge ehr Websockets! ;-) Es bietet sich mit HTML5 an, wieso also auch nicht nutzen?! :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Dieses wehleidige Thema.
BeitragVerfasst: Mo 06 Dez, 2010 15:28 
Offline
Profi
Profi

Registriert: Mo 20 Apr, 2009 00:30
Beiträge: 125
Kevz hat geschrieben:
Ich bevorzuge ehr Websockets! ;-) Es bietet sich mit HTML5 an, wieso also auch nicht nutzen?! :-)


HTML5 wird zwar in einigen Jahren verbreitet sein, aber noch ist es nicht der Fall.
Z.B. Websockets Unterstützung wirst du bei der Minderheit deiner Besucher feststellen können.
Deswegen bevorzuge ich Web-Techniken, welche bei der Mehrheit der Besucher vorhanden ist + Fallback :).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Dieses wehleidige Thema.
BeitragVerfasst: Fr 10 Dez, 2010 19:59 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Stimmt, da magst Du recht haben. Aber es wäre eine Möglichkeit die in ferner Zukunft eher in Angriff zu nehmen wäre! :-)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 26 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum