Website Chat Umsetzung?

... komplette Frage anzeigen

4 Antworten

Wie schon gesagt wurde gibt es die Möglichkeit Websockets dafür zu benutzen.

Eine andere Möglichkeit ist long-polling. Das heißt dass der ajax request vom Server zB 60 Sekunden lang aufrechterhalten wird und der server erst antwortet sowie eine neue Nachricht da ist.

Vorteil zu alle paar Sekunden ajax-Requests senden:
Weniger Traffic.

Nachteil:
Ein Server kann nur eine begrenzte Anzahl Verbindungen gleichzeitig aufrechterhalten, wenn du also viele Benutzer hast wird dein Server damit überlastet. Bei wenigen Benutzern kann das durchaus gut funktionieren.

Ich würde aber Websockets im Vergleich zu dieser Methode vorziehen, ich habe diese Möglichkeit nur ergänzt weil Websockets nicht mit jeder Server-Konfiguration so ohne weiteres funktionieren. (Vor allem wenn man, wie ich, bei einem Hosting Service ist wo PHP ohne "--enable-sockets" konfiguriert ist)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von FloPinguin
13.01.2016, 22:41

Hab mir das mit Websockets gerade mal durchgelesen, das wäre in meinem Fall keine so optimale Lösung.

Die Methode mit Ajax-Requests könnte man ja stark optimieren:

- Chat ist Verborgen, erst beim klick darauf werden Nachrichten geladen (Chat ist immer in den rechten Ecke des Bildschirms)
- Automatische Schließung des Chats wenn der Nutzer Maus und Tastatur nicht nutzt oder sich nicht mit dem Chat beschäftigt
- Reload-Timer auf höhere Sekunden Intervalle setzen
- Nur eine Nachricht pro x Sekunden senden dürfen
- Geschickte Abfragen (nicht jedes mal alles abfragen, sondern nur fragen ob etwas neues da ist)

0
Kommentar von FloPinguin
15.01.2016, 23:34

Naja ist aber notwendig, sonst könnte man einfach Spammen.

0

Node.js + Websockets. Ist im Prinzip nicht schwer - wenn man JS kann, das Hosting des Node.js-Server funktioniert und falls nötig die Kommunikation zwischen PHP-Webapp und Node.js-Server (User authentifizieren...) hergestellt wurde.

Wäre halt super performant. Ob du diese Performance benötigst, das ist die große Frage. Für ein dutzend Chatteilnehmer auf keinen Fall. Da reicht dein AJAX-Ansatz.

Long-polling ist von der Idee & Umsetzung her super einfach. Hier wird behauptet, mit einem NGINX-Server seien auch 10000 gleichzeitige Verbindungen möglich: http://www.accso.de/wp/2013/11/skalierbares-http-long-polling/

Antwort bewerten Vielen Dank für Deine Bewertung

Ja gibt es - Websocket benutzen.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?