Eigener Chat programmieren

  • Hallo


    Ich hab grad Lust einen eigenen Chat zu programmieren. Sollte ein Chat werden wo alle zusammen schreiben können aber auch private nachrichten im Chat senden soll möglich sein. Jeder User soll auch ein profil haben usw, ...
    Ich weiß nur nicht genau wie ich einige Sachen machen soll.


    Reichen PHP, HTML,CSS aus um das hin zu kriegen?
    Wie regle ich das mit dem öffentlichen Raum wo jeder mit jedem schreiben kann und alle Nachrichten erhält ohne enorme Ressourcen vom Server zu verbrauchen?



    Hoffe ihr könnt mir weiter helfen.


    MfG HolyBeast

  • kommt drauf an, was du so drauf hast. HTML und CSS kenntnisse brauchst du auf jeden fall.
    damit kommst du natürlich nicht aus. da du damit nur statische Seiten machen kannst.
    um das ganze dynamisch zu machen brauchst du noch eine Programmiersprache (ja, html und css sind KEINE programmiersprachen, es sind sog. Markup-languages, also im priinzip "nur" "daten-speicher-sprache")
    da gibts natürlich einige zur auswahl:
    - php (relativ einfach zu erlernen, relativ schnell "irgendwas" aufgestellt - stößt relativ schnell an seine grenzen, und ist oft unsicher, bzw. ist schnell mal unsicherer code produziert)
    > Apache Server


    - java -> JavaEE (auch nicht schwer zu erlernen, jedoch bis man "wirklich was sieht" dauerts länger)
    >tomcat Server (es gibt auch andere.. aber naja..)


    - c# -> asp (nicht ganz so leicht zu erlernen, und auch nicht ganz so verbreitet wie obere, aber durchaus auch eine möglichkeit)


    edit: was du dir unabhängig dazu noch anschauen sollst ist: "was ist AJAX?".. wirst du brauchen, damit nicht bei jeder nachricht die ganze seite neu geladen werden muss
    ausserdem "was ist eine Datenbank, und wie überleg ich mir ein sinnvolles design?" - wirst du brauchen um eine User zu managen und möglicherweise auch die nachrichten abzuspeichern

  • zu asp.net sei noch gesagt, dass du darfür soweit ich weiß nen windows server brauchst. und nicht jeder hoster lässt zu, was asp.net so alles braucht

    Dieser Beitrag wurde noch nie editiert, zuletzt von »hangman« (Heute , 13:37)



    1355?mode=raw


    Skill ist, wenn Luck zur Gewohnheit wird

  • Zitat

    - c# -> asp (nicht ganz so leicht zu erlernen, und auch nicht ganz so verbreitet wie obere, aber durchaus auch eine möglichkeit)


    Das ist jetzt zwar Erbsenzählerei, aber wenn, dann ASP.NET bitte. Im .NET-Umfeld gibt es kein ASP und ASP an für sich hat mehr mit PHP gemein als mit der .NET-Variante. Gleicher Name, unterschiedliche Sachen.


    Zitat

    - java -> JavaEE (auch nicht schwer zu erlernen, jedoch bis man "wirklich was sieht" dauerts länger)
    >tomcat Server (es gibt auch andere.. aber naja..)


    Ach kommt, die meisten konnten das doch schon erahnen oder ;)
    Ich weiß nicht, was du unter einfach verstehst, aber JEE ist es sicherlich nicht. Einem Browser was zum Schauen zu geben, ist noch keine JEE-Anwendung und JEE ist so komplex, dass nicht ohne Grund bei Projekten auch locker 7- und 8-stellige Beträge reinfließen. Das ist kein Kinderkram und für Anfänger schon gar nicht geeignet, erst recht nicht, wenn man weder die Grundlagen von Java beherrscht und sowieso nicht, wenn man generell keine Erfahrungen mit ähnlichen Umgebungen hat. Und der Part mit dem Applicationserver ist auch eine völlig eigene Geschichte. Klar, ich denke jetzt natürlich im Business-Umfeld und ein stupider Chat entspricht nicht ganz dem, aber so oder so, man braucht dafür sehr viel Wissen, viel Einarbeitungszeit und ein großes Versändnis für den gesamten Ablauf und alles drumherum. Das ist nichts für Anfänger und bereitet selbst vielen erfahrenen Leuten aus dem Java-Umfeld Kopfschmerzen. Bestes Beispiel sind Studenten, die meinen sie könnten JEE, weil sie ein oder zwei Projekte für die Uni in JEE umsetzen mussten. Realtität ist aber leider, dass das weniger ist, als der Schaden an einem Auto, wenn man versucht mit einem Fingernagel den Lack anzukratzen. Das ganze Thema ist eben nicht einfach und sollte so auch nicht verkauft werden.

  • ok, stimmt, was ich eigentlich damit aussagen, und erreichen wollte, ist - nicht alles muss php sein, mich kotzt das einfach schon voll an, wenn jemand glaub, dass jede WebSeite in php sein muss... von dem abgesehen, deutest du wieder genau in die andere Richtung.
    von dem abgesehn, mein erster Satz war "kommt drauf an, was du so drauf hast" ... das habe ich gefragt, weil vielen nicht bewusst ist, dass man damit auch "webseiten proggrammieren" kann.. und wenn man das schon drauf hat, lohnt sich der blick auf jeden fall - und wenn er sich durch genau diese , selbstauferlegte, Aufgabe gut in JEE einarbeiten kann, kann das sicher auch eine gut Refferenz für einen späteren Job sein


    btw. ich bin von der ersten Sekunde davon ausgegangen, das der Threadersteller nicht schnell mal was hinpfuschen möchte - sollte das der Fall sein, werd ich mich von diesem Thread natürlich abwenden

  • Die Frage ist einfach, soll ein Chat im Browser sein oder eine Desktop Anwendung oder sogar beides?
    Weil bei einer Desktop Anwendung bist du gezwungen dich mit TCP/UDP Verbindungen auseinander zu setzen, bei einem Browser Chat nicht unbedingt, wobei es auch hier eine Option darstellen kann.
    Die einfachste Browservariante wäre mit HTML/CSS, PHP und JS/Ajax umzusetzen, wobei das eher eine Shoutbox wäre, da die Echtzeitbedinung nur teilweise erfüllt ist. Wenn du einen wirklichen Chat willst, dann wirst du nicht drum rum kommen einen Server zu programmieren und einen Client, da du sonst vom Server nicht zum Client hin sagen kannst "Hey neue Nachricht da!", da HTTP ein zustandloses Protokoll ist und die Verbindung nach einer Abfrage getrennt wird.
    Alles in allem ist ein Chat nix was man mal eben macht und auch nix was einfach ist, da es einfach extrem viel zu beachten gibt unter anderem: Verbindungstatus aller Clients, evt. Systemnachrichten, Wer ist mit wem am schreiben uvm. Wenn du nicht wirklich Ahnung von Programmieren hast und nicht weißt wie man Netzwerkstreams etc. in der Sprache deine Wahl behandelt, dann lass es und mach lieber ne PHP, HTML/CSS, JS Shoutbox, die ist einiges einfacher.


    Gruß Enno


    P.S. Auch ASP.NET bietet viel mehr als das was die meisten Leute nutzen. Was es halt meiner Meinung nach "besser" als JEE macht ist, dass es gefühlt einfacher zu deployen ist, wobei sowas natürlich immer Geschmackssache ist.


    EDIT: UNd nein für ASP.NET brauchst nicht unbedingt einen Windows Server ASP.NET 2.0, ASP.NET MVC und ASP.NET Ajax sind afaik im Mono Projekt implementiert und Projekte auf deren Basis kann man dementsprechend auch auf Linux laufen lassen, wenn Mono installiert ist.

  • dann wirst du nicht drum rum kommen einen Server zu programmieren und einen Client, da du sonst vom Server nicht zum Client hin sagen kannst "Hey neue Nachricht da!", da HTTP ein zustandloses Protokoll ist und die Verbindung nach einer Abfrage getrennt wird.


    das halt ich für ein gerücht
    https://en.wikipedia.org/wiki/…chnology#HTTP_server_push
    bzw. https://en.wikipedia.org/wiki/WebSocket
    sprich, man muss nicht die verbindung nachen einem request-response-zyclus trennen.. das ist nur meistens der Fall

  • Okay, dennoch wird es sich dann damit beschäftigen müssen und ob das dann soviel einfach ist, als sich direkt selber mit TCP zu beschäftigen ist noch die Frage. Zumal Push nicht von jedem Browser unterstützt wird und die meisten HTTP-Server eine maximal Laufzeit für Skripte definiern und so ein Server ja im Grunde dauerhaft hören muss und nicht nur für n-Sekunden. Im Grunde ist WebSocket von dem was ich da jetzt drüber gelesen habe auch nix anderes als das Wrappen von normalen Sockets, so dass Clientscripts drauf zu greifen können.

  • Xaw.4 ich weiß ja nicht wie viel Ahnung bzw wie viel du mit php schon gearbeitet hast.
    Aber PHP stößt nicht so schnell an seine Grenzen.
    PHP kann vom Speed her durchaus mit Java mithalten.


    Ennosuke WebSockets sind in der Tat einfach nur ein JavaScript Wrapper für die normalen Socket Funktionen.
    Allerdings ist das eine gigantische neuerung und kann der interaktivität viel mehr Spielraum verschaffen da man vorher immer ein PHP script als vermittler nutzen musste.
    Sprich alles wird einfacher und immens schneller mit Sockets.


    Aber genug davon.
    Ich kann euch allen nur mal empfehlen euch Meteor.js und Node.js anzugucken.
    Sehr simpel, reines JavaScript und effizient.
    Man kann mit reinem Javascript nen kompletten chat basteln ohne eine DB oder andere Sprachen zu nutzen.
    Natürlich muss dafür auch ein Moderner Browser her. IE 8 kann den Chat nicht mehr ausführen.


    Wir setzen auf einen Java Server, MySql DB, JavaScript mit Websockets und PHP als forwarder falls der Browser zu alt für Websockets ist.
    Das Layout ist natürlich mit HTML und CSS3 geschustert.

  • Klar stößt PHP nicht so schnell an seine Grenzen, aber Java genau so wenig. Vom Speed tun sich beide Sprachen nicht viel, da sie beide Interpretiert werden, wobei Java da noch ein paar ms rausholen kann durch die starke Typisierung. Wenn es aber um Speed geht, sollte man eh eher auf C/C++ setzten, als auf Java/PHP/C#.


    Was jetzt für den vom TE gewünschten Chat am besten ist hängt halt wirklich davon ab, was er alles damit machen will und die Frage ist auch will er es produktiv einsetzen oder ist es ne Fingerübung. Bei ersterem würde ich ihn eher zu einer fertigen OpenSource Lösung empfehlen, das macht es einfacher für ihn und wenn das Projekt gewaretet wird, muss er sich nicht selber um Bugs etc. kümmern.

  • http://meteor.com/ ;) ich kanns nur sagen es ist ein blick wert


    Java verbraucht aber immens viel mehr ressourcen.
    Wir nutzen auf Arbeit Grails was auf Groovy was auf Java aufbaut.
    Unsere Applikationen sind sehr leicht von PHP zu schlagen.
    Das gilt für CPU, Ram und allgemeine Geschwindigkeit.


    Das mag natürlich auch an schlechtem Code liegen^^
    Aber Grundsätzlich würde ich sagen PHP ist leichter und schneller wenn man es richtig benutzt.

  • Ich hab es mir schon angeschaut und naja für mich ist es nicht. Ich setzte JS nur dann ein wenn es wirklich sein muss oder für optische Sachen die aber keinerlei funktionelle Bewandniss haben. Ich spreche dem nicht ab, dass es gut ist, nur halt nicht die Art von Framework die ich einsetzten würde.


    Man kann auch mit Java ressourcen sparen, wenn man es drauf anlegt und je nach Anwendung ist es stärker und schneller als PHP. Bei kleinen Sachen hat man natürlich einen extremen Overhead durch VM, aber bei JEE Anwendungen die wirklich Gebrauch von den Features machen, fällt das nicht mehr ins Gewicht und ich bin der festen Überzeugung, dass PHP dann sogar langsamer bzw. ressourcen-intensiver ist. Für nen plainen einfachen Chat ist Java (und auch ASP.NET) wohl ein Overkill.


    Naja wenn man es richtig benutzt ist PHP auch sicher, dennoch würde ich nicht behaupten, dass es sicherer ist als Java, denn für beide Sprachen gilt: Es ist nur so sicher wie es programmiert bzw. umgesetzt ist.

  • @Sick: naja, viel hab ich jetzt mit PHP auch nicht gemacht, das muss ich zugeben.. aber ich hab die erfahrung gemacht, dass manche sachen (für mich) nicht so stimmig sind wie in Java, bsp. ist php prozedural oder oop? -> beides - echt jetzt?
    jaja.. ich bin kein Fan von PHP, einfach, weil es "zu einfach" ist - du wirst wissen was ich meine.. "mit großer einfachheit kommt große Verantwortung" und ZACK, schon ist Onkel SQL von den Decepticons hochgenommen worden ;)
    und auch da hast du mich erwischt: auch wenn meine liste nicht den anspruch gehabt hat, vollständig zu sein, hätte ich - vorallem bei dem "Anforderungsprofil" an node.js denken können (damit hab ich persöhnlich zwar noch nicht gearbeitet, aber ich kenne es)
    auch Ruby on Rails, hätte mir einfallen können - jajaja.. auch ein bisschen overkill

  • Warum das Rat neu erfinden? Ich würde mir einfach einen IRC Server aufsetzen und eine Weboberfläsche für den Clienten einbinden siehe https://kiwiirc.com/ z.Bsp.
    Bist du einen eigenen Webchat geschrieben hast wird erfahrungsgemäß das Projekt langweilig. Aber das ist meine persönliche Meinung. ;)

  • Will gerne was eigenes machen ^^. Dient zum zeitvertreib und ich will gerne was neues dazu lernen.
    Also wenn ich das jetzt richtig verstehe:


    Erste Möglichkeit wäre einen Server für den Chat programmieren der alle Nachrichten entgegen nimmt und an die Clients ( user im Browser) weiter leitet
    Die 2. wäre das ganze in HTML, CSS, PHP, Javascript, vllt Java zu machen.


    Wenn ich die 2. Möglichkeit nehmen würde. Wie würdet ihr das machen um die Nachricht an jeden weiter zu leiten ohne extreme Ressourcen durch das refreshen einiger Elemente zu verbrauchen?

  • Naja, ich glaube du hast das ein klein bisschen falsch verstanden.
    möglichkeit 1 und 2 die du ansprichst, sind ca. die gleichen für mich.


    Also... so wie ich das sehe, bzw. vorschlagen würde:
    du Brauchst eine Serverapplikation und eine Clientapplikation.
    Die Serverapplikation, ist dafür zuständig, die nachrichten zu empfangen, sie zu verarbeiten, zu speichern und weiterzugeben...
    - dabei ist es am empfehlenswertesten, wenn du nicht den ganzen Server schreibst. Sprich du verwendest PHP oder JavaEE oder Node.js oder was anderes... (nach dem schon einiges hier erwähnt und abgewogen wurde, würde ich Node.js oder PHP empfehlen)


    Die Clientapplikation, ist dafür zuständig, die Nachrichten anzuzeigen, neue nachrichten auzuzeichnen und an den server zu leiten.
    - dabei kannst du entweder ein Eigenes Programm schreiben (Java, C#, wenn du ganz wahnsinnig bist, dann Delphi). Ich würde dir empfehlen- und ich glaube auch das ist, was du dir vorgestellt hast - das als Webseite zu realisieren- (ja ich bezeichne eine Webseite als applikation.. deal with it!).
    Dabei musst du dich dann viel weniger um die netzwerksachen (TCP..) kümmern und jeder (Ob Mac, Win, Linux oder Mobile) kann es benutzen.
    dabei bist dann natürlich mehr oder minder gezwungen HTML und CSS zu verwenden.
    Damit das ganze auch (sinnvoll) benutzbar ist, wirst auch um JavaScript nicht rumkommen.
    nochmal das Stichwort AJAX... das ist eine Technik, mit der du bei geladener Seite nochmal einen HTTP-request an den Server schickst, und dann die Möglichkeit hast, nur einen teil der Webseite (zb die eine Nachricht, die dazugekommen ist) nachzuladen.


    ich hoffe das war dir nicht zu allgemein, aber ich weiß einfach, dass es sehr viele möglichkeiten gibt das zu realisieren...

  • Mit HTML CSS und PHP kann man das machen wenn man Javascript dazu benutzt, immer nach neuen nachrichten zu fragen


    Dann aber nur in Intervallen und die dürfen nicht zu kurz sein, sonst greift evt. ein Sicherheitsmechanismus des Servers ;)


    Eigentlich hat Xaw.4 alles gesagt. Als Webapplikation wird der Client wohl ein Misch aus PHP und JS sein. Für die Desktopvarianten ist dann halt die Frage welche Sprache(n) du kannst, aber wenn du damit eine neue Lernen willst, dann ist es denke ich relativ schlecht geeignet ;)