Ich baue eine Webanwendung mit PHP, JavaScript/jQuery und MySQL. Im Moment versuche ich, eine Chat-Funktion zu implementieren, die es zwei Benutzern ermöglicht, die beide online sind, miteinander zu chatten (z. B. NICHT einen großen Chat-Raum, sondern nur private Chats zwischen zwei Benutzern). Allerdings habe ich bei der Umsetzung in die folgenden Fragen lauteten:PHP AJAX - Chat Funktionalität
Wie kann ich lassen ein Benutzer wissen, ob ein anderer Benutzer die gerade online ist oder nicht? Jetzt habe ich eine Seite, auf der ein Benutzer den Namen anderer registrierter Benutzer sehen kann. Ich hoffe, diejenigen, die gerade eingeloggt sind, von denen zu unterscheiden, die nicht eingeloggt sind. Derzeit, wenn ein Benutzer angemeldet ist, speichere ich seinen Benutzernamen in
$_SESSION['name']
. Wie kann ein Benutzer wissen, ob auch ein anderer Benutzer$_SESSION['name']
eingestellt ist?Wie kann ich sicherstellen, dass die Konversation für zwei Benutzer privat ist? Ich habe derzeit eine Seite mit dem Namen
"chat.php"
, in der sich die Chat-Oberfläche befindet. Wenn ein Benutzer auf den Namen eines anderen Benutzers klickt, der auch online ist, werden die beiden zu ihrer eigenen"chat.php"
geleitet. Ebenso sollten andere Benutzer den Chat nicht sehen können, an dem sie nicht beteiligt sind. Ich denke gerade darüber nach, eine eindeutige Seite für die zwei Benutzer zu erstellen, wie"chat.php?user1=Tom&user2=John"
. Aber wie genau soll ich das erreichen? Ich bin neu in PHP.Um die neue Nachricht anzuzeigen, wenn die andere Person gerade eine gesendet hat, können wir dies mit Ajax auf ereignisgesteuerte Weise tun? Oder können wir nur Umfragen verwenden? Ich bin derzeit mit Abfrage wie folgt aus, aber ich fühle, dass die Abfrage nicht jeder effizient ist:
// "logs.php" reads chat message from the database setInterval(function(){ $.get("logs.php", {}, function(resp) { // display the response }); }, 1000); // poll every second
Jede Eingabe an eine der oben genannten Fragen zu schätzen wissen! Vielen Dank.
1) normalerweise nach der Zeit zuletzt aktiv
JimL
@JimL Kannst du näher erklären, wie man 1) ein Intervall benutzt, um einen Benutzer zu bestimmen, der online ist? 2) einen Chat-Raum erstellt und die beiden Benutzer "hinzufügt"? Danke – fittaoee
1) speichern Sie die Zeit jedes Mal, wenn ein Benutzer etwas (navigiert zu einer Site, sendet eine Nachricht, etc). Wenn dies weniger als 5 Minuten her ist, dann betrachten Sie den Benutzer als "aktiv". 2) Erstellen Sie eine Raumtabelle mit einer Autoinkrement-ID, user_id_1 und user_id_2, erstellen Sie einen neuen Raum und fügen Sie die beiden Benutzer hinzu. Haben Sie eine Seite, die die Raum-ID annimmt, überprüft, ob der Benutzer eine der beiden hinzugefügten Benutzer-IDs ist, und wenn ja, zeigen Sie einige Chat-Sachen an. – JimL