# Chat



## rauchmelder (2. Dezember 2004)

Hallo, ich weiß das das nicht der richtige Bereich ist, aber ich weiß einfach nicht wohin damit,...
Also es geht drum einen Chat zu programmieren, und wollte nun fragen wie z.B.: hier: http://www.sms.at es geschaft wird, das die Seite "stream" d.h. die seite nicht fertig geladen wird sondern "immer ladet"?

*pls* help mfg Rauchmelder


PS: Vielleicht auch wie der Chat realisiert ist (Sprache,...)


----------



## split (2. Dezember 2004)

Deiner Beschreibung nach würde ich schätzen, der Chat ist in PHP programmiert. Im PHP-Forum findest du bereits viele, viele Diskussionen rund um Chats. Eine Altanative (oder auch bessere Lösung) ist es, einen Chat über ein Applet zu realisieren.

PS: Fertige Chats in PHP findest du auf http://www.php-resource.de


----------



## Alexander Schuc (2. Dezember 2004)

Hi.

PHP kannst da schon mal bisserl vergessen wenns um etwas größeres gehen soll. So einen Stream mit PHP aufrecht zu erhalten ist, wenn es überhaupt anständig geht, sicher etwas unperformant.

sms.at nutzt ein Produkt von http://www.cyberworkers.at/ . Meiner Meinung nach wird das ein komplett eigenständiger Server sein, der für diesen HTML-Stream zuständig ist, und auch die restlichen Anfragen bezüglich der Chat-Funktionalitäten (User-, Channelhandling etc.) behandelt.

MfG,
Alex


----------



## rauchmelder (3. Dezember 2004)

ja, das ist mit scho klar, hab mich durch die cyberworkers auch schon ein paar mal durchgearbeitet, aber irgendwie werde ich nicht schlau daraus, hmm wie funktioniert das?
Wie schaffen die es einen Stream zu erzeugen?

mfg Rauchmelder


----------



## split (3. Dezember 2004)

Einen Stream kannst du folgendermaßen erzeugen:
	
	
	



```
<?php
   while(true) { #Endlosschleife
      //Ausgabe aus DB holen
      echo $ausgabe;
      flush();
   }
?>
```
Allerdings funktioniert das nur, wenn max_execution_time in der php.ini auf unendlich (-1) gesetzt ist!


----------



## rauchmelder (3. Dezember 2004)

hmm,... aber lädt da die Page nicht erst ganz zum Schluss (html im Browser) der lädt ja kontinuerlich und gibt er es auch kontinuierlich aus oder wartet er bis zum Schluss?


----------



## Alexander Schuc (3. Dezember 2004)

rauchmelder, bitte vergiss nicht auf unsere Netiquette!

Da diese Chatserver ja auch eigene Applikationen sind und nicht zum Beispiel PHP Scripte hier mal ein kleines Beispiel in C#.


```
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;

public class TestServer
{
	public static void Main(string[] args)
	{

		TcpListener listener = new TcpListener(8081);
		listener.Start();
		
		TcpClient client = listener.AcceptTcpClient();
		
		string buffer = "";

		buffer = buffer + "HTTP/1.1 200\r\n";

		buffer = buffer + "Server: teststreamserver\r\n";

		buffer = buffer + "Accept-Ranges: byte" + "\r\n";

		buffer = buffer + "Content-Type: text/html\r\n";

		buffer = buffer + "Content-Length: 32768\r\n\r\n";

				

		byte[] byteBuffer = System.Text.Encoding.ASCII.GetBytes(buffer);

		client.GetStream().Write(byteBuffer,0,byteBuffer.Length);

		byte[] testmsg = System.Text.Encoding.ASCII.GetBytes("Das ist ein Teststring..bla..<br />");
		while (true)
		{
		
			client.GetStream().Write(testmsg, 0, testmsg.Length);
			Thread.Sleep(5000);
			
		}

	}
}
```

Kannsts ja mal ausprobieren und du wirst sehen das er lädt und lädt und lädt .. und irgendwann, wenn genügen Daten angekommen (ContentLength-Header..) sind oder die Verbindung geschlossen wird, wird er aufhören.


----------

