Portal > Foren > PHP > PHP-Programmierung > [Brainstorming] Features, die ein Chat besitzen sollte
Antwort
 
Themen-Optionen
Alt 04.11.2005, 10:13 Nach oben    #1
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard [Brainstorming] Features, die ein Chat besitzen sollte

Guten morgen (=,
nun, ich würde mit euch mal gernre ein Brainstorming durchführen (ich denke jeder von euch weiß was damit gemeint ist). Es geht um folgendes Thema:

Welche Features / Extras / Admin-Optionen / ect.. sollte ein Chat besitzen?
Idee dabei ist, dass ich eine möglichst große Anzahl an guter Ideen sammle, die ich anschließend für mein Projekt nutzen kann. Ich habe mir schon sämtliche Chats im Netz angesehen, heruntergeladen, im Code gestöbert, ausprobiert ect, beispielsweise POC, MyMazen ect.. , um mir dort auch noch einige Infos zu holen.
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.11.2005, 10:53 Nach oben    #2
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
Standard

Hmm wäre vieleicht einfacher wenn du uns mal ne Liste der vorhandene Features gibst, meine Messlatte wäre wohl IRC

-> registrierbare nicks
-> channels mit passwort
-> verschiedene user-level
-> bouncer ? *g*

mfg
robo47
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.11.2005, 11:33 Nach oben    #3
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

- Kicken, Bannen von Usern durch SUs, VIPs, Admins
- Feste, öffentliche Räume
- Optionale, private Räume
- Räume abschließbar (öffentliche nur durch Admins, private durch Admins oder den Raumeröffner); Abgeschlossene Räume sind nurncoh durch Admins betretbar oder durch eine Einladung in den Raum
- Der Öffnre eines privaten Raumes kann User kicken (aber bitte NUR kicken, nicht bannen )
- Admins können auch in abgeschlossene Räume gehen
- Flüstern über Räume hinweg
- Standardbefehle wie /me, /nickname, /s, /col, etc.
- Spam-Control in Verbindung mit einem Kick des Spammers
- Chat-Log für Admins der letzten 15, 20, wieviel auch immer Minuten (z.B. /log 20 für die letzten 20 Minuten); Eventuell auch selektierbar von welchen Usern
- Informationen zum User (z.B. /w username)
- Away-Funktion mit Anzeige der Away-Msg sobald der User angeflüstert wird

Das ist erstmal so grob das, was ich mir vorstellen würde bei einem Chat zusätzlich zu den Sachen, die Robo bereits ansprach
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.11.2005, 14:09 Nach oben    #4
me pro ok?
 
Benutzerbild von Lars
 
Registriert seit: 07.09.2005
Ort: Pulheim bei Köln
Beiträge: 964
Standard

Ich war in meinen früheren Jahren mal kurze Zeit bei www.smilechat.de angemeldet, die Features waren gut bis sehr gut.
__________________
Gedanken aus Draht stricken einen Zaun.
Lars ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.11.2005, 12:29 Nach oben    #5
Neuer Benutzer
 
Registriert seit: 18.08.2005
Beiträge: 28
Standard

du könntest einen/mehrere irc channel wrappen...
http://de2.php.net/manual/de/ref.ircg.php
Du-weisst-schon-wer ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.11.2005, 06:13 Nach oben    #6
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Mein Ziel ist es nämlich, eine Alternative zu dem MyMazen Chat anzubieten:
http://www.mymazenphp.net

Sieht vielleicht ganz nett aus, aber der Chat (zumindest in seiner vorgängerversion) besitzt viele Lücken, und nicht nur der HTML-Code ist total unsauber gestaltet und programmiert.

Ich werde wohl nicht mit IRC / Java arbeiten, sondern (selbst bei Chatsoftware) bei PHP bleiben. POC demonstriert beispielsweise schön den Umgang mit Shared Memory / Semaphoren, sollte der Server das nicht unterstützen wird automatisch die Streaming-Variante genutzt, genauso möchte ich das auch machen.

Nun hätte ich eben gerne ein paar Features gelistet gehabt, die vielleicht auch noch niemand hat, damit ich was "Einzigartes" schaffen kann .. Vielen Dank schonmal für die bisherigen Antworten.. (=

Allerdings ist ein JavaApplet schon auch reizend und sicherlich auch sinnvoller, vorallem wie dieses auf smilechat .. kennt jemand ein solches Gerüst auf welches ich dann "aufbauen" kann?
__________________
http://www.ChrisDiary.De

Geändert von Chr!s (07.11.2005 um 06:23 Uhr).
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.11.2005, 23:44 Nach oben    #7
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

Also ich habe meinen Chat auf Socket-Basis programmiert. Ein Shell-PHP-Script, das den Server darstellt und auf einem Port horcht und dann einfach mit fsockopen () drauf zugegriffen. Läuft rasend schnell und äußerst stabil. Die in meinen Augen sinnigste Variante, wenn man für später noch externe Chat-Clients nutzen möchte und sich in C nicht ganz so gut zurechtfindet wie in PHP. Mein Chat läuft seit über 7 Wochen ohne Fehler / Abstürze so.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.11.2005, 23:46 Nach oben    #8
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Zitat:
Zitat von MrNiceGuy
Mein Chat läuft seit über 7 Wochen ohne Fehler / Abstürze so.
Gute Quote .. Respekt.

Geändert von Ben (07.11.2005 um 23:48 Uhr).
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.11.2005, 05:48 Nach oben    #9
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

@Ben: Ich bin überzeugt, dass er noch wesentlich länger laufen wird, aber ich habe ihn vor 7 Wochen halt erst 'fertig' bzw. online gestellt (und das erst als Beta, es fehlen lediglich noch Admin-Funktionen wie Kicken und so).

Ich werde versuchen so schnell wie möglich hier mal generell ein Beispiel eines Listening-Servers rein zu posten, dann kann jeder sich mal anschauen, wie genau das aussieht. Ich denke ich mache da nen Tutorial draus, da man auch andere Sachen damit realisieren könnte (z.B. ein Update-Server oder wenn man ganz krass ist und sich an die Spezifikationen hält sogar nen eigener Webserver )
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.11.2005, 15:18 Nach oben    #10
Corvin Gröning
 
Benutzerbild von Corvin
 
Registriert seit: 19.03.2005
Ort: S-H | Flensburg
Beiträge: 449
Standard

Zitat:
Zitat von MrNiceGuy
es fehlen lediglich noch Admin-Funktionen wie Kicken und so
Das wäre eines der ersten Features gewesen, die ich eingebaut hätte, aber das ist wohl Ansichtssache, was zuerst und was zuletzt kommt.
__________________
Corvin ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.11.2005, 17:45 Nach oben    #11
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

@Corvin: Möglich, aber ich wollte erstmal nur sehen, ob der Chat läuft und er läuft momentan noch als BETA in meiner Allianz (MMOG-Game-Ally) auf der Webseite mit zig Usern und da ist das nicht nötig, da dort alle zivilisiert miteinander umgehen können, da sind die Funktionen nebensächlicher gewesen, als andere. Für weitere Projekte sind die Admin-Funktionen jedoch unerlässlich
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 11.11.2005, 11:42 Nach oben    #12
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

So, habe mal mein Server-Script entschlackt und nur das nötigste eingebracht, das man definitiv braucht:

PHP-Code:
<?php
error_reporting 
(E_ALL);

// Sendet Informationen an Clients

function handle_client ($client_rec$buf)
{
  foreach (
$client_rec AS $client)
  {
    
socket_write ($client$buf."\r\n");
  }
}

// Empfängt Informationen von Clients

function sock_recv ($line$sock, &$data$len$flags)
{
  if ((
$bytes = @socket_recv ($sock$data$len$flags)) === FALSE)
  {
    return 
FALSE;
  }
  else
  {
    
$data trim ($data);

    if (
$bytes != 0)
    {
      return 
TRUE;
    }
    else
    {
      return 
FALSE;
    }
  }
}

// Schließt eine Verbindung zum Client

function sock_close ($line$sock)
{
  global 
$io_org$sockets$session;
  if ((
$index array_search ($sock$io_org)) === TRUE)
  {
    unset (
$io_org[$index]);
  }
  if (isset (
$session[$sockets[$sock]]) === TRUE)
  {
    unset (
$session[$sockets[$sock]]);
  }
  if (isset (
$sockets[$sock]) === TRUE)
  {
    unset (
$sockets[$sock]);
  }
  
socket_close ($sock);
}

// Zu Testzwecken automatisch nach 5 Minuten abbrechen lassen, damit bei Endlosschleifen
// das Script nur eine gewisse Zeit läuft und nicht den Webserver zum Absturz bringt

set_time_limit (300);

$ip '127.0.0.1';
$port 1337;

// Socket erstellen, über den man auf die Verbindungen zugreifen kann

if (($host socket_create (AF_INETSOCK_STREAMSOL_TCP)) < 0)
{
  die (
'socket_create () fehlgeschlagen! Grund: '.socket_strerror ());
}

// Den Socket als "Reuseable" setzen

socket_set_option ($hostSOL_SOCKETSO_REUSEADDR1);

// Den Socket auf die IP-Adresse und den Port ($ip; $port) binden

if (($ret socket_bind ($host$ip$port)) < 0)
{
  echo 
'socket_bind() fehlgeschlagen! Grund: '.socket_strerror (socket_last_error ($host))."\n";
}

// Dem Socket sagen, dass er auf der angegebenen IP und dem angegebenen Port nach
// neuen Verbindungen horchen soll. Die 25 gibt an, dass maximal 25 neue Verbindungen
// in die Warteschlange gestellt werden, sollte das Script gerade mit anderen Aufgaben
// beschäftigt sein, als neue Verbindungen anzunehmen.

if (($ret socket_listen ($host25)) < 0)
{
  echo 
'socket_listen() fehlgeschlagen! Grund: '.socket_strerror (socket_last_error ($host))."\n";
}

// $read_sockets enthält im Array alle Sockets, auf denen er nach Änderungen horchen soll

$read_sockets = array ($host);

// $run muss während der While-Schleife nur auf False gesetzt werden, damit die While-Schleife beendet wird.

$run TRUE;

while (
$run === TRUE)
{
  
// Kopieren des Arrays $read_sockets - Dies ist nötig, da durch die Funktion socket_select ()
  // Das Array direkt geändert wird und als Inhalte nurnoch die Elemente enthält, auf denen
  // wirklich Änderungen stattgefunden haben.

  
$changed_sockets $read_sockets;

  
// Mit socket_select wartet man auf eine Änderung der Stati der in $changed_sockets angegebenen
  // Sockets (z.B. versuchen diese zu schreiben o.ä.) $write und $except werden nicht gebraucht
  // und einen genauen Verwendungszweck habe ich bisher noch nicht gesehen. Die 0 sind die Sekunden
  // bis zum Timeout und die 500.000 sind die Microsekunden.

  
$num_changed_sockets socket_select ($changed_sockets$write NULL$except NULL0500000);
  foreach (
$changed_sockets as $socket)
  {
    if (
$socket == $host)
    {
      
// Wenn der Socket, der sich geändert hat, der Socket des Servers sein sollte, versucht ein Script
      // / Programm von außerhalb eine Verbindung zum Server aufzubauen. Mit socket_accept wird die
      // Verbindung angenommen und als neuer Socket vorerst in $client gespeichert.

      
if (($client socket_accept ($host)) < 0)
      {
        echo 
'socket_accept() fehlgeschlagen! Grund: '.socket_strerror (socket_last_error ($host))."\n";
        continue;
      }
      else
      {
        
// Den Client zur Liste der Sockets hinzufügen, die auf Änderungen geprüft werden
        
        
array_push ($read_sockets$client);

        
// Zur Weiterverarbeitung den Socket auch in $socket speichern

        
$socket $client;
      }
    }

    
// Daten von dem Client empfangen und in $data speichern

    
$bytes sock_recv ($socket$data20480);
    
    
// Hier folgt der Code, mit dem man die empfangenen Daten verarbeitet
    
  
}
}
?>
Man sollte aber beachten, dass nur das Ausgabe-Fenster des Scriptes in die Liste der zu überwachenden Sockets kommt. Die Text-Eingabe sollte seperat über eine weitere Verbindung zum Server stattfinden. Dazu ist es jedoch nötig innerhalb des Servers eine Art Session laufen zu lassen, die vorher geprüft wird oder jedes Mal die Anmelde-Informationen zu prüfen oder so, damit der Text, der gesendet wurde auch dem entsprechenden Chat-User zuzuordnen ist.

Ein Client sieht dann in etwa so aus:

PHP-Code:
<?php
// Öffne die Verbindung zum Server

$file fsockopen ('127.0.0.1'1337$err_no$err_str2);

// Warte eine zehntelmillisekunde (Nötig, da sonst eventuell Fehler bei
// der Verbindung auftreten können

usleep (100000);

// Sende "Hallo Welt" an den Server ("\r\n" wird als Zeilenabschluss benötigt
// sonst werden die Daten nicht abgeschickt!)

fwrite ($file'Hallo Welt'."\r\n");

usleep (100000);

fclose ($file);
?>
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Chat hängt sich bei IE5 und 6 auf. suppenmann JavaScript und AJAX 3 12.09.2006 12:30
Chat Jan Gesuche 13 28.01.2006 02:26
Chat burli001 Plauderecke 7 27.11.2005 20:51
Chat Organisation Paule Allgemeine Java-Programmierung 5 26.05.2005 22:58


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:08 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44