Hallo nochmal!
Nur mal so als kleinen Vergleich was genau jetzt der Unterschied ist, wenn Du einen Chat mit HTTP versuchst nachzubilden, der sich alle 10 sekunden aktalisiert, dann gehen in einer Minute ca. folgende Daten über die Leitung(wenn sich nichts verändert hat und Du wirklich vernünftig mit HTTP arbeitest):
6 Anfragen und Antworten bei IRC:
PONG :irc.kickchat.com PING :irc.kickchat.com
PONG :irc.kickchat.com PING :irc.kickchat.com
PONG :irc.kickchat.com PING :irc.kickchat.com
PONG :irc.kickchat.com PING :irc.kickchat.com
PONG :irc.kickchat.com PING :irc.kickchat.com
PONG :irc.kickchat.com PING :irc.kickchat.com
6 Anfragen und Antworten bei HTTP:
GET /chat.php?action=new_msgs HTTP/1.1\r\n Request Method: GET Host: www.deine-domain.de\r\n User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\r\n Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,/;q=0.1\r\n Accept-Language: de-DE,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7\r\n Keep-Alive: 300\r\n Connection: keep-alive\r\n Cookie: softwarepatente=set\r\n If-Modified-Since: Tue, 23 Sep 2003 09:59:51 GMT\r\n \r\n
HTTP/1.1 304 Not Modified\r\n Response Code: 304 Date: Tue, 23 Sep 2003 10:04:23 GMT\r\n Server: Apache\r\n Connection: Keep-Alive\r\n Keep-Alive: timeout=15, max=99\r\n Expires: Tue, 23 Sep 2003 10:05:23 GMT\r\n Cache-Control: public, max-age=60\r\n Vary: Accept-Encoding\r\n \r\n
GET /chat.php?action=new_msgs HTTP/1.1\r\n Request Method: GET Host: www.deine-domain.de\r\n User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\r\n Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,/;q=0.1\r\n Accept-Language: de-DE,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7\r\n Keep-Alive: 300\r\n Connection: keep-alive\r\n Cookie: softwarepatente=set\r\n If-Modified-Since: Tue, 23 Sep 2003 09:59:51 GMT\r\n \r\n
HTTP/1.1 304 Not Modified\r\n Response Code: 304 Date: Tue, 23 Sep 2003 10:04:23 GMT\r\n Server: Apache\r\n Connection: Keep-Alive\r\n Keep-Alive: timeout=15, max=99\r\n Expires: Tue, 23 Sep 2003 10:05:23 GMT\r\n Cache-Control: public, max-age=60\r\n Vary: Accept-Encoding\r\n \r\n
GET /chat.php?action=new_msgs HTTP/1.1\r\n Request Method: GET Host: www.deine-domain.de\r\n User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\r\n Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,/;q=0.1\r\n Accept-Language: de-DE,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7\r\n Keep-Alive: 300\r\n Connection: keep-alive\r\n Cookie: softwarepatente=set\r\n If-Modified-Since: Tue, 23 Sep 2003 09:59:51 GMT\r\n \r\n
HTTP/1.1 304 Not Modified\r\n Response Code: 304 Date: Tue, 23 Sep 2003 10:04:23 GMT\r\n Server: Apache\r\n Connection: Keep-Alive\r\n Keep-Alive: timeout=15, max=99\r\n Expires: Tue, 23 Sep 2003 10:05:23 GMT\r\n Cache-Control: public, max-age=60\r\n Vary: Accept-Encoding\r\n \r\n
GET /chat.php?action=new_msgs HTTP/1.1\r\n Request Method: GET Host: www.deine-domain.de\r\n User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\r\n Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,/;q=0.1\r\n Accept-Language: de-DE,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7\r\n Keep-Alive: 300\r\n Connection: keep-alive\r\n Cookie: softwarepatente=set\r\n If-Modified-Since: Tue, 23 Sep 2003 09:59:51 GMT\r\n \r\n
HTTP/1.1 304 Not Modified\r\n Response Code: 304 Date: Tue, 23 Sep 2003 10:04:23 GMT\r\n Server: Apache\r\n Connection: Keep-Alive\r\n Keep-Alive: timeout=15, max=99\r\n Expires: Tue, 23 Sep 2003 10:05:23 GMT\r\n Cache-Control: public, max-age=60\r\n Vary: Accept-Encoding\r\n \r\n
GET /chat.php?action=new_msgs HTTP/1.1\r\n Request Method: GET Host: www.deine-domain.de\r\n User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\r\n Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,/;q=0.1\r\n Accept-Language: de-DE,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7\r\n Keep-Alive: 300\r\n Connection: keep-alive\r\n Cookie: softwarepatente=set\r\n If-Modified-Since: Tue, 23 Sep 2003 09:59:51 GMT\r\n \r\n
HTTP/1.1 304 Not Modified\r\n Response Code: 304 Date: Tue, 23 Sep 2003 10:04:23 GMT\r\n Server: Apache\r\n Connection: Keep-Alive\r\n Keep-Alive: timeout=15, max=99\r\n Expires: Tue, 23 Sep 2003 10:05:23 GMT\r\n Cache-Control: public, max-age=60\r\n Vary: Accept-Encoding\r\n \r\n
GET /chat.php?action=new_msgs HTTP/1.1\r\n Request Method: GET Host: www.deine-domain.de\r\n User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\r\n Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,/;q=0.1\r\n Accept-Language: de-DE,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7\r\n Keep-Alive: 300\r\n Connection: keep-alive\r\n Cookie: softwarepatente=set\r\n If-Modified-Since: Tue, 23 Sep 2003 09:59:51 GMT\r\n \r\n
HTTP/1.1 304 Not Modified\r\n Response Code: 304 Date: Tue, 23 Sep 2003 10:04:23 GMT\r\n Server: Apache\r\n Connection: Keep-Alive\r\n Keep-Alive: timeout=15, max=99\r\n Expires: Tue, 23 Sep 2003 10:05:23 GMT\r\n Cache-Control: public, max-age=60\r\n Vary: Accept-Encoding\r\n \r\n
So, hierbei wird in 1 Minute nichts gesprochen. Wenn ich aber in IRC was schreibe, sieht das so aus:
privmsg #selfhtml :hallo!
wenn ich in HTTP was schreibe sieht das z.B. so aus:
GET /chat.php?action=new_msg&text=Hallo! HTTP/1.1\r\n Request Method: GET Host: www.deine-domain.de\r\n User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1\r\n Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,/;q=0.1\r\n Accept-Language: de-DE,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n Accept-Encoding: gzip,deflate\r\n Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7\r\n Keep-Alive: 300\r\n Connection: keep-alive\r\n Cookie: softwarepatente=set\r\n If-Modified-Since: Tue, 23 Sep 2003 09:59:51 GMT\r\n \r\n
Wenn jemand anderes was schreibt, dann sieht das ganze in etwa so aus bei IRC:
:nick!~client PRIVMSG #room :Guten Tag!
Bei HTTP wird es hier richtig schwerer, denn qas machst Du? OK, Du musst die Seite neu aufbauen, weil Du ne neue Nachricht hinschreiben musst, also so:
HTTP/1.1 200 OK\r\n Response Code: 200 Date: Tue, 23 Sep 2003 10:04:27 GMT\r\n Server: Apache\r\n Vary: Accept-Encoding,User-agent\r\n Cache-Control: public, max-age=259200\r\n Expires: Fri, 26 Sep 2003 10:04:27 GMT\r\n Last-Modified: Thu, 17 Jul 2003 21:31:59 GMT\r\n ETag: "2dc975-488-3f1715cf"\r\n Accept-Ranges: bytes\r\n Keep-Alive: timeout=15, max=100\r\n Connection: Keep-Alive\r\n Content-Type: text/html\r\n Content-Encoding: gzip\r\n Content-Length: 590\r\n \r\n <html> <head> <title>mein toller HTTP-Chat</title> </head> <body> <table> <tr> <td>1. Nachricht</td><td>Hallo!</td><td>Autor: Andreas</td> </tr> <tr> <td>2. Nachricht</td><td>Guten Tag!</td><td>Autor: nick</td> </tr> ... </table> </body> </html>
So, und das ganze wird nach einiger Zeit recht lang.
Sicher es gibt die sog. Spezialisten die sagen "klar, HTTP kann doch streamen", aber das funktioniert nicht, in manchen Browsern gar nicht und scheitert spätestens nach wenigen Minuteh an irgendeinem Timeout endgültig.
Ich hoffe Du siehst hier warum HTTP sich nicht eignet?
Grüße Andreas