• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Chat Probleme...

TH3HobbyG4M3R

New member
[Gelöst] Chat Probleme...

Guten Tag!
Das ist mein erster Beitrag und mein erster Besuch in diesem Forum.
Ich hätte da mal eine Frage...
Bestimmt wurde die schon paar mal beantwortet, aber in Google finde ich nichts...
(Habe schon sehr lange gesucht, insgesamt 2 Wochen und da ich nicht weiter komme und ich bei selbst testen nichts hinbekommen habe, dachte ich mir, ich frage einfach mal).
Also, zur Frage:

Ich habe einen Chat programmiert (mit PHP), ich lasse ihn mit Javascript jede Millisekunde aktualisieren, aber da das sehr Ressourcen-lastig ist und es nicht sehr optimal ist, weil man da nicht scrollen kann oder etwas anklicken kann, will ich das besser regeln.
Ich will das der Chat immer refresht, wenn eine Nachricht kommt. Ich habe gedacht, dass man am besten mit JS prüft, ob eine neue Nachricht in der Datenbank rein gekommen ist und dann refresht, aber selbst da scheitere ich schon, weil ich kann nur HTML(5)(Ist zwar keine Programmier Sprache, aber naja), PHP und bisschen JS, JQuery etc.

um auf den Punkt zu kommen.

Ich will das der Chat live refresht, wenn eine Nachricht kommt, um einen guten/perfekten chat zu haben.
Der Chat sieht so aus: zDomiHD - Loading... (Nicht wegen dem Design erschrecken, ist ja nur das Design)

Ich hoffe ihr könnt mir helfen!

Mit freundlichen Grüßen
TH3HobbyG4M3R
 
Zuletzt bearbeitet von einem Moderator:
Ist das deine Seite?

Einen Chat sehe ich da nicht, dafür bedenkliches.

Ja, dass ist meine Seite, die habe ich für einen Freund gemacht, ich habe leider vergessen das /chat an den Link zu hängen, kann man aber genau so über die Navigation aufrufen =)
Hier ist die genaue url: zDomiHD - [Beta] Chat

Das ist ein bisschen viel - auch wenn du nur per AJAX prüft, ob eine neue Nachricht da ist.
Ich weiß das jede Millisekunde viel ist, deswegen ja :DD

Was hast du denn genau probiert?

Also,
zuerst es prüfen zu lassen, ob die aktuelle Nachricht, gleich die aktuelle Nachricht in der DB entspricht, heißt über Timestamp
dann als zweites abzufangen wenn eine Nachricht geschickt wird und dann bei allen zu aktualisieren
und das war es eig. ich muss zugeben, sehr gut Javascript kann ich nicht.

PS: bei dem Link steht

Ja, das weiß ich ebenso, dass habe ich da hingeschrieben, weil ich die Seite für einen Freund gemacht habe und da er sie jetzt nicht mehr benötigt, wollte ich sie verkaufen.
Habe zurzeit 2 Domains zu verkaufen.
 
Ich weiß das jede Millisekunde viel ist, deswegen ja :DD
Verstehe ich jetzt nicht. In welchem Sinn „ja”?
Falls du aus Sicht des Users meinst: als Mensch bekommt man Verzögerungen im ein-/zweistelligen Millisekunden-Bereich überhaupt nicht mit...

zuerst es prüfen zu lassen, ob die aktuelle Nachricht, gleich die aktuelle Nachricht in der DB entspricht, heißt über Timestamp
dann als zweites abzufangen wenn eine Nachricht geschickt wird und dann bei allen zu aktualisieren
Ja, das ist im Grunde das Prinzip von Long-Polling: Understanding Ajax Long-Polling Requests - WebCooker


PS: anstatt einfach bei jedem Benutzer den Hinweis „Please enable JavaScript if it is disabled.” einzublenden, solltest du das nur bei denjenigen, bei denen JS tatsächlich nicht aktiviert/unterstützt ist. Genau dafür gibt es <noscript>.
 
Zuletzt bearbeitet:
Also,
zuerst es prüfen zu lassen, ob die aktuelle Nachricht, gleich die aktuelle Nachricht in der DB entspricht, heißt über Timestamp
dann als zweites abzufangen wenn eine Nachricht geschickt wird und dann bei allen zu aktualisieren
und das war es eig. ich muss zugeben, sehr gut Javascript kann ich nicht.
Ich wollte eigentlich Code sehen...
 
Falls du aus Sicht des Users meinst: als Mensch bekommt man Verzögerungen im ein-/zweistelligen Millisekunden-Bereich überhaupt nicht mit...
Ja, schon klar, aber man kann keine Links, oder andere Sachen anklicken und dazu ist das sehr Performance lastig und wenn jemand einen "schlechteren" PC, bzw "Schlechteres" Internet hat, kann das zu Komplikationen führen...

Ja, das ist im Grunde das Prinzip von Long-Polling: Understanding Ajax Long-Polling Requests - WebCooker
Ich werde es mal Versuchen! Schon mal danke!

und die einzigen Gründe, urheberrechtlich geschützte Games zu modden (zu verändern), sind illegalem Ursprungs.
Das weiß ich ebenfalls, aber ich habe damit ja nichts zu tun, diese Seite habe ich für einen Freund gemacht, ich bin nur der Developer, der Rest macht er.

PS: anstatt einfach bei jedem Benutzer den Hinweis „Please enable JavaScript if it is disabled.” einzublenden, solltest du das nur bei denjenigen, bei denen JS tatsächlich nicht aktiviert/unterstützt ist. Genau dafür gibt es https://developer.mozilla.org/de/doc...ipt]<noscript>.
Ich weiß, dass das mit
HTML:
<noscript>TEXT</noscript>
funktioniert, aber irgendwie auch nicht :/ Deswegen habe ich das so gelöst...
Bei meinem Test, wo ich JS deaktiviert habe, wurde der text nicht angezeigt...
 
Ich wollte eigentlich Code sehen...
Hehe.. Ich bin so einer, wo wenn der Code nicht geht, wird er gelöscht und weiter gesucht / weiter getestet. d.H. Ich habe den Code nicht mehr...

Könnt ihr mir vielleicht sagen, wie man das am besten machen kann, mit Prüfen ob es eine neue Nachricht gibt, wenn ja, dann refresh den Chat?
Aber nicht den code für mich machen :D, höchstens ein kleines Beispiel oder ein Link wo mir helfen könnte, das umzusetzten.

Bin für jede Hilfe dankbar!

Aber bis jetzt, habe ich den Chat so, wenn du das meinst:
Das Reloaden:
Code:
                    //Chat Reload
			var timeout = setTimeout(reloadChat, 500);
			 
			function reloadChat () {    
			$('.load').load('index.php .load',function () {
					 $(this).children().unwrap(); 
					 $(this).unbind('load');
					 timeout = setTimeout(reloadChat, 500);    
			});
			}

und der Chat

Code:
<h2>Chat [→Beta← •Version: 0.6.5•]</h2>
					<?php if(!isset($_SESSION['UserID'])){ ?><h2>Welcome Guest to the Chat from zDomiHD</h2><?php } ?><?php if(isset($_SESSION['UserID'])){ ?><h2 style="<?php if(in_array($_SESSION['UserName'], $Creator)) { echo 'color: #a31d1d;'; } else if(in_array($_SESSION['UserName'], $Admin)) { echo 'color: #b30000;'; } else if(in_array($_SESSION['UserName'], $Banhammer)) { echo 'color: #b30000; weight: 900;'; } else if(in_array($_SESSION['UserName'], $Lappen)) { echo 'color: #f241cb;'; } else { echo 'color: #808000;'; }?>">Welcome <?php  echo $_SESSION['UserName'] ?> to the Chat from zDomiHD</h2><?php } ?>
					<?php if(!isset($_SESSION['UserID'])){ ?><p>Please enable JavaScript when u have Disabled it or u cant use all in this chat!</p><?php } ?>
					<?php if(isset($_SESSION['UserID'])){ ?><a class="btn btn-primary btn-xs" href="http://forum.jswelt.de/chat/logout" role="button">Logout</a><span>Please enable JavaScript when u have Disabled it or u cant use all in this chat! <strong>Tip:</strong> When u arent get any messages, then reload the page!</span><?php }?>
					<div style="background-color: #000000; color: #FFFFFF; word-wrap:break-all; -ms-word-break: break-all; overflow:hidden; word-break: break-word; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto;" id="s1" class="block load">
						<?php
							$ChatResult = mysqli_query($db, "SELECT * FROM Chat ORDER BY ID DESC");
					
							while($ChatItem = mysqli_fetch_object($ChatResult))
							{
							
								$ChatAutor = $ChatItem->UserID;
								$ChatTimestamp = $ChatItem->Timestamp;
								$ChatText = $ChatItem->Text;
								
								$AutorResult = mysqli_query($db, "SELECT Username FROM Accounts WHERE ID='$ChatAutor'");
								$AutorItem = mysqli_fetch_object($AutorResult);
								
								$AutorName = $AutorItem->Username;
								
						?>

							<p><span style="color: #1700DD;">[<?php echo date("d.m.Y - H:i", $ChatTimestamp); ?>]</span> <span style="<?php if(in_array($AutorName, $Creator)) { echo 'color: #a31d1d;'; } else if(in_array($AutorName, $Admin)) { echo 'color: #b30000;'; } else if(in_array($AutorName, $Banhammer)) { echo 'color: #b30000; weight: 900;'; } else if(in_array($AutorName, $Lappen)) { echo 'color: #f241cb;'; } else { echo 'color: #808000;'; }?>" class="chat-user"><?php if(in_array($AutorName, $Creator)) { echo 'Creator -> '; } else if(in_array($AutorName, $Admin)) { echo 'Admin -> '; } else if(in_array($AutorName, $Banhammer)) { echo ''; } else if(in_array($AutorName, $Lappen)) { echo 'Lappen -> '; } else { echo 'User -> '; }?><?php echo $AutorName; ?></span>: <span class="chat-msg"><?php echo autolink($ChatText,array("target"=>"_blank")); ?></span></p>

							<?php
							}
						?>
					</div>

Ps. Der code ist schon bisschen älter, aber meine aktuellen Chat's sehen relative gleich aus, nur halt das PHP bisschen besser gemacht, nicht das ihr jetzt denkt, ich bin ein kompletter noob, wo nicht coden kann :DD

PPs. Ich hoffe euch stört das ein gerügte nicht, hab es jetzt nicht alles nach Links gemacht..
 
Das weiß ich ebenfalls, aber ich habe damit ja nichts zu tun, diese Seite habe ich für einen Freund gemacht, ich bin nur der Developer, der Rest macht er.

Ich glaube nicht, das du dir das so einfach machen kannst und machen solltest.

Als seriöser Developer würde man sich von einem illegalen Projekt distanzieren.

Auch denke ich, das die Arbeit an so einem Projekt, auch wenn sie sich nur auf die Webseite beschränkt, eventuell den Tatbestand der Beihilfe erfüllen kann und du somit zumindest als Mittwisser dich nicht mit der lapidaren Aussage "ich hab ja nur Befehle befolgt/meine Arbeit gemacht" aus deiner Verantwortung nehmen kannst.

Ps: dies war jetzt keine Rechtsberatung sondern ein Denkanstoß.

Übrigens hast du etwas weiter oben noch gesagt:

Ja, dass ist meine Seite

also nichts mit "den Rest macht jemand anders"
 
Zuletzt bearbeitet:
Ich glaube nicht, das du dir das so einfach machen kannst und machen solltest.

Als seriöser Developer würde man sich von einem illegalen Projekt distanzieren.

Auch denke ich, das die Arbeit an so einem Projekt, auch wenn sie sich nur auf die Webseite beschränkt, eventuell den Tatbestand der Beihilfe erfüllen kann und du somit zumindest als Mittwisser dich nicht mit der lapidaren Aussage "ich hab ja nur Befehle befolgt/meine Arbeit gemacht" aus deiner Verantwortung nehmen kannst.

Ps: dies war jetzt keine Rechtsberatung sondern ein Denkanstoß.

Übrigens hast du etwas weiter oben noch gesagt:



also nichts mit "den Rest macht jemand anders"

Es ist rein Theoretisch meine Seite, aber habe sie für ihn gemacht und außerdem hat er aufgehört und ich werde, wie man schon lesen kann, die Domain verkaufen, d.H auch die Seite wird verschwinden.

Was er macht ist mir relativ egal, ich habe ihm die Seite gemacht und mehr nicht :DD
Und da ich die Seite, wenn die Domain verkauft ist, löschen werde, ist das dann alles fertig.

Aber das hat ja auch alles nichts mit meinem Problem zu tun, mein Problem ist der Chat und nicht die Seite, was wer macht.

Kannst du das mal näher erläutern?

Also, es aktualisiert jedes mal (jede 0.500 Sekunde, sprich jede halbe Sekunde) und man kann durch das refreshen nirgends drauf klicken, geschweige denn, scrollen. Und was ist schon ein Chat, wenn man da nicht die vorherige Nachrichten lesen kann, da kann ich auch gleich sagen, dass das eine Shoutbox ist.

Was nicht geht:
Man kann keine Links andrücken.
Nicht scrollen
und ist sehr Ressourcen lastig, weil es jedes mal refresht..
 
es aktualisiert jedes mal (jede 0.500 Sekunde, sprich jede halbe Sekunde) und man kann durch das refreshen nirgends drauf klicken, geschweige denn, scrollen.
Was nicht geht:
Man kann keine Links andrücken.
Nicht scrollen
und ist sehr Ressourcen lastig, weil es jedes mal refresht..



PS:
es aktualisiert jedes mal (jede 0.500 Sekunde, sprich jede halbe Sekunde)
<-> :confused:
ich lasse ihn mit Javascript jede Millisekunde aktualisieren
 
Also soll ich Long-Polling machen?
Ja!

The Mechanism

We will send an XHR Request with a Timestamp once the page opens up.
That request will take the Timestamp and check if there are messages added after the time given.
If yes we will kill the request with a Json payload with the new messages. Once the messages are sent to the browser we will wait a second and then send another XHR Request.
If no messages were added we will keep looping again and again until there are messages.
 
AW: [Gelöst] Chat Probleme...

Ich habe mir programmiert? Oder ich habe mir von wem anders kopiert?
Muss deinen Post da doch sehr in Frage stellen und auch das mit den 2 Wochen, da ich MEINEN Chat bzw Auszüge davon erst letzte Nacht gepostet hatte.

Also ka ob mein Rechner spackt, aber das hier ist mein Chat...
Chat by Gosu
Und bei seinem Link lande ich in einem Ordner, welcher nen Unterordner "chat" hat der einem meine Loginseite zeigt.
Der Unterordner...

Wollte dir eig sogar erst noch schreiben und helfen, aber ist schon etwas sehr dreisst... :D
 
Zuletzt bearbeitet:
AW: [Gelöst] Chat Probleme...

Gosu, worauf beziehst du dich? Das ist doch längst gelöst. Wenn du selbst eine Frage hast mach bitte einen neuen Thread auf und verlinke ggf. hier her.
 
Zurück
Oben