Ich versuche, einen PHP
chat zu erstellen, also habe ich server.php
, das den Server auf dem Terminal startet, der auf client
connections wartet:
Die Funktion client()
ist der Code, den ich von einer Datei client.php
habe, die bei Ausführung auf dem Terminal Nachrichten von server.php
senden und empfangen kann. Jetzt möchte ich meine main.php
-Datei verwenden. Sobald der Benutzer eingeloggt ist, sendet er Nachrichten an den Server, der die Nachrichten zurücksendet, die der Benutzer noch nicht gesehen hat.
Wenn ich server.php
und client.php
von zwei verschiedenen Terminals aus starte, kann ich Nachrichten senden und empfangen, allerdings möchte ich das mit main.php
machen, diese Antwortnachricht in ein JSON
-Objekt umwandeln und zurücksenden auf der Seite html
, wo es an eine textarea
Box angehängt wird.
Mein Problem ist: Wie bekomme ich die Antwort, dass client.php
erhalten und zurück an die HTML-Seite senden?
Wenn ich es auf dem Terminal ausführe, habe ich:
Ich benutze AJAX
, um die Benutzereingaben im Chat zu senden, also wollte ich in der Lage sein, diese Nachricht zu nehmen und sie an den Server zu senden, den ich auf dem Terminal gestartet habe, und die Antwort zurück und weiterleiten zum Webseite und hängen Sie diese an den Textfeldbereich an.
Wie kann ich das erreichen? Sollte ich client.php
als Dienst über main.php
starten? Oder sollte ich die Funktion client($input)
verwenden, um eine Nachricht zu senden und dann zurückgeben, was sie zurücksendet?
Ich wollte jedoch, dass client
ausgeführt wird, bis sich der Benutzer abmeldet, da andere Clients eine Verbindung zum Chat herstellen können. Wie kann ich erreichen, dass das für mich irgendwie verschwommen ist? Der Code in client( $input )
ist derselbe wie in client.php
.
Sorry für Off-Topic, aber wenn Sie können, wäre es besser, XMPP-ready-Lösung wie Ejabberd-Server mit http-Bind-Modul zu verwenden. Sicher, es gibt einige Nachteile für eine solche Lösung, aber die Nachteile sind größer. Schauen Sie einfach in diese Lösung, vielleicht wird es Ihr Problem mit niedrigen Kosten lösen.
Siehe zugehörige Antwort mit einer kurzen Beschreibung der XMPP-Lösung
Ich glaube, ich verstehe, was vor sich geht. Klingt, als ob du einen Zuhörer vermissen könntest? Normalerweise haben Chat-Programme clientseitige Ajax, die in regelmäßigen Abständen nach Nachrichten für einen bestimmten Benutzer suchen oder diese abhören.
Wenn zum Beispiel jemand eine Nachricht für Benutzer x in Ihrer Datenbank hinterlassen hat (oder wo auch immer Sie Nachrichten speichern), haben Sie vielleicht Javascript, das jede Sekunde ein PHP-Skript aufruft, um zu sehen, ob es irgendwelche Nachrichten auf dem Server gibt für Benutzer x. Wenn dies der Fall ist, können Sie die Nachricht oder Nachrichten zurücksenden und sie über Ihre Ajax-Rückruffunktion empfangen.
Wenn Sie mit jQuery vertraut sind, sehen Sie sich die Methode $ .get an: Ссылка
Wie ich Ihre Frage verstehe, möchten Sie eine Nachricht vom Client an den Server senden und sobald diese Nachricht an den Server gelangt, wird sie an alle Clients antworten ... ich bin richtig ???
Ich plaudere wie nodejs und andere javascripts tech ... und muss sagen, dass eine gute Option hier Web-Sockets sind. Erkenne, dass die Browser-Unterstützung begrenzt ist , aber da du nicht angegeben hast, welche Browser dafür benötigt werden, denke ich, dass das ein guter Weg ist geh.
Überprüfen Sie diese verwandten Links:
Sockets in JavaScript \ HTML verwenden
Eine Möglichkeit, nur mit php + js zu arbeiten, besteht darin, eine Funktion auszuführen und in setInterval alle 12 Sekunden eine Anfrage an den Server zu stellen. Ich habe 2005 eine Art Asp-Chat gemacht, der diesen Ansatz verwendet. Und ich muss sagen, der Web-Socket ist viel besser.
Ich weiß nicht, ob das deine Frage beantwortet ... lass es mich wissen!
Ich habe etwas in diese Richtung entwickelt, bevor ich PHP und jQuery benutzt habe. Die Lösung, die ich gewählt habe, war auf die Einschränkungen des Server-Setups (außerhalb meiner Kontrolle) zurückzuführen. Ich habe ein PHP-Kernskript verwendet, um das gesamte Layout der Seite vom Nachrichtenfenster zum Nachrichtenübermittlungsfeld zu erstellen. Jeder Benutzer, der auf die Seite kam, erhielt einen zufällig generierten Benutzer wie user123234234, der von einem Unix-Zeitstempel ab dem Zeitpunkt, an dem er die Chat-Seite betrat, erstellt wurde.
Alle übermittelten Nachrichten wurden in einer XML-Datei gespeichert und täglich wurde eine neue XMl-Datei erstellt. Der Benutzer wurde in einem Nachrichtenknoten wie unten mit Details des Benutzers für jede Nachricht mit verschiedenen Knotenattributen gespeichert.
Das Nachrichtenfenster wurde alle 5 Sekunden aktualisiert, indem ein Jquery AJAX-Aufruf an ein anderes PHP-Skript durchgeführt wurde, das die XML-Tages-XML-Datei erst ab dem Zeitpunkt einlud, zu dem der Benutzer die Chat-Seite betrat.
%Vor%Es gibt viel mehr Logik dahinter, aber ich fand es am einfachsten zu entwickeln und zu pflegen, ich hoffe es hilft dir, in die richtige Richtung zu weisen. Und es funktioniert auf allen gängigen Browsern und von IE7 +.