Maison développement back-end tutoriel php Fonction de retrait et de révocation des messages du système de chat en temps réel basé sur PHP

Fonction de retrait et de révocation des messages du système de chat en temps réel basé sur PHP

Aug 26, 2023 am 09:16 AM
实时聊天 消息撤回 Fonction d'annulation

Fonction de retrait et de révocation des messages du système de chat en temps réel basé sur PHP

Fonction de retrait et de révocation des messages du système de chat en temps réel basé sur PHP

Introduction :
Avec le développement rapide et la popularité d'Internet, le système de chat en temps réel est devenu un moyen important pour les gens de communiquer quotidiennement. Lors du développement d’un système de chat, la mise en œuvre de fonctions de rappel et de révocation de messages est une exigence courante. Cet article expliquera comment utiliser PHP pour écrire un système de discussion en temps réel basé sur WebSocket et implémenter des fonctions de retrait et de révocation de messages.

  1. Créer l'environnement
    Tout d'abord, nous devons configurer l'environnement PHP et le service WebSocket. Vous pouvez choisir d'utiliser un framework PHP tel que Laravel ou Symfony, ou d'utiliser directement la bibliothèque WebSocket native de PHP. Dans le framework, vous pouvez utiliser Composer pour gérer les dépendances.
  2. Créer une base de données
    Nous avons besoin d'une base de données pour stocker les messages de discussion. MySQL ou d'autres bases de données relationnelles peuvent être utilisées. Créez une table nommée chat_messages, contenant les champs suivants :
  3. id : identifiant unique du message
  4. sender_id : identifiant utilisateur de l'expéditeur
  5. receiver_id : identifiant utilisateur du destinataire
  6. message : contenu du message
  7. timestamp : heure d'envoi du message
  8. Réel -Fonction de chat en temps
    Utilisez le protocole WebSocket pour réaliser une communication en temps réel. En PHP, un serveur WebSocket peut être implémenté à l'aide de bibliothèques telles que Ratchet ou Swoole. En écoutant les messages et les événements de connexion du client, les messages sont enregistrés dans la base de données et envoyés au destinataire en temps réel.

Ce qui suit est un exemple simple utilisant la bibliothèque Ratchet :

require 'vendor/autoload.php';

use RatchetMessageComponentInterface;
use RatchetConnectionInterface;

class Chat implements MessageComponentInterface {
    protected $clients;

    public function __construct() {
        $this->clients = new SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn) {
        $this->clients->attach($conn);
    }

    public function onMessage(ConnectionInterface $from, $msg) {
        // 解析接收到的消息
        $data = json_decode($msg, true);

        // 将消息保存到数据库
        $message = new ChatMessage();
        $message->sender_id = $data['sender_id'];
        $message->receiver_id = $data['receiver_id'];
        $message->message = $data['message'];
        $message->timestamp = time();
        $message->save();

        // 将消息发送给接收者
        foreach ($this->clients as $client) {
            if ($client !== $from && $client->resourceId == $data['receiver_id']) {
                $client->send($data['message']);
                break;
            }
        }
    }

    public function onClose(ConnectionInterface $conn) {
        $this->clients->detach($conn);
    }

    public function onError(ConnectionInterface $conn, Exception $e) {
        $conn->close();
    }
}

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
    8080
);

$server->run();
Copier après la connexion
  1. Implémentation des fonctions de retrait et de révocation des messages
    Afin d'implémenter les fonctions de retrait et de révocation des messages, nous devons ajouter une colonne à la table de la base de données pour identifier l'état de le message. Vous pouvez ajouter un champ nommé status pour indiquer l'état du message :
  2. 1 : Normal
  3. 2 : Retrait
  4. 3 : Révoquer

Modifiez la fonction onMessage et ajoutez les paramètres du champ d'état avant d'enregistrer le message dans la base de données. :

$message = new ChatMessage();
$message->sender_id = $data['sender_id'];
$message->receiver_id = $data['receiver_id'];
$message->message = $data['message'];
$message->timestamp = time();
$message->status = 1; // 设置消息状态为正常
$message->save();
Copier après la connexion

implémente la fonction de retrait, qui peut envoyer l'instruction de retrait au serveur côté client, et définit le statut du message correspondant sur retiré :

public function onMessage(ConnectionInterface $from, $msg) {
    // 解析接收到的消息
    $data = json_decode($msg, true);

    // 根据消息ID更新状态为撤回
    ChatMessage::where('id', $data['message_id'])
        ->update(['status' => 2]);

    // 广播撤回消息给接收者
    $this->broadcastMessage($data['message_id'], $from, $data['receiver_id']);
}

public function broadcastMessage($messageId, ConnectionInterface $from, $receiverId) {
    foreach ($this->clients as $client) {
        if ($client !== $from && $client->resourceId == $receiverId) {
            $client->send(json_encode(['action' => 'revoke', 'message_id' => $messageId]));
            break;
        }
    }
}
Copier après la connexion

implémente la fonction de retrait, qui peut envoyer l'instruction de retrait sur du côté client au serveur et définit le statut du message correspondant Statut défini sur retiré :

public function onMessage(ConnectionInterface $from, $msg) {
    // 解析接收到的消息
    $data = json_decode($msg, true);

    // 根据消息ID更新状态为撤销
    ChatMessage::where('id', $data['message_id'])
        ->update(['status' => 3]);

    // 广播撤销消息给接收者
    $this->broadcastMessage($data['message_id'], $from, $data['receiver_id']);
}

public function broadcastMessage($messageId, ConnectionInterface $from, $receiverId) {
    foreach ($this->clients as $client) {
        if ($client !== $from && $client->resourceId == $receiverId) {
            $client->send(json_encode(['action' => 'revoke', 'message_id' => $messageId]));
            break;
        }
    }
}
Copier après la connexion
  1. Traitement côté client
    Du côté client, affichez de manière appropriée si le message a été retiré ou révoqué, en fonction de l'état du message renvoyé.

Résumé :
Cet article explique comment utiliser PHP pour créer un système de discussion en temps réel basé sur WebSocket et implémenter des fonctions de retrait et de révocation de messages. Ces fonctionnalités peuvent être facilement mises en œuvre en utilisant la bibliothèque et la base de données Ratchet pour stocker et traiter les messages. Dans les projets réels, l'expansion et l'optimisation correspondantes peuvent être réalisées en fonction des besoins.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment créer une application de chat en temps réel avec React et WebSocket Comment créer une application de chat en temps réel avec React et WebSocket Sep 26, 2023 pm 07:46 PM

Comment créer une application de chat en temps réel à l'aide de React et WebSocket Introduction : Avec le développement rapide d'Internet, la communication en temps réel a attiré de plus en plus d'attention. Les applications de chat en direct font désormais partie intégrante de la vie sociale et professionnelle moderne. Cet article expliquera comment créer une application simple de chat en temps réel à l'aide de React et WebSocket, et fournira des exemples de code spécifiques. 1. Préparation technique Avant de commencer à créer une application de chat en temps réel, nous devons préparer les technologies et outils suivants : React : un pour la construction

Comment ajouter une fonctionnalité de chat utilisateur en temps réel à votre site Web à l'aide de PHP et MQTT Comment ajouter une fonctionnalité de chat utilisateur en temps réel à votre site Web à l'aide de PHP et MQTT Jul 08, 2023 pm 07:46 PM

Comment utiliser PHP et MQTT pour ajouter une fonction de chat utilisateur en temps réel au site Web À l'ère d'Internet d'aujourd'hui, les utilisateurs de sites Web ont de plus en plus besoin de communication et de communication en temps réel. Afin de répondre à cette demande, nous pouvons utiliser PHP et MQTT pour ajouter du réel. -Fonction de chat utilisateur en temps réel sur le site Web. Cet article expliquera comment utiliser PHP et MQTT pour implémenter la fonction de chat utilisateur en temps réel du site Web et fournira des exemples de code. Assurez-vous que l'environnement est prêt Avant de commencer, assurez-vous d'avoir installé et configuré les environnements d'exécution PHP et MQTT. Vous pouvez utiliser le développement intégré tel que XAMPP

Comment implémenter la fonctionnalité de chat en temps réel en PHP Comment implémenter la fonctionnalité de chat en temps réel en PHP Sep 24, 2023 pm 04:49 PM

Comment implémenter la fonction de chat en temps réel en PHP Avec la popularité des réseaux sociaux et des applications de messagerie instantanée, la fonction de chat en temps réel est devenue une fonctionnalité standard de nombreux sites Web et applications. Dans cet article, nous explorerons comment implémenter la fonctionnalité de chat en direct à l'aide du langage PHP, ainsi que quelques exemples de code. Utilisation du protocole WebSocket La fonctionnalité de chat en direct nécessite généralement l'utilisation du protocole WebSocket, qui permet une communication bidirectionnelle entre le serveur et le client. En PHP, nous pouvons utiliser la bibliothèque Ratchet pour implémenter les services WebSocket

Chat en ligne en temps réel utilisant la technologie Workerman et HTML5 WebSocket Chat en ligne en temps réel utilisant la technologie Workerman et HTML5 WebSocket Sep 09, 2023 am 11:00 AM

Chat en ligne en temps réel utilisant la technologie Workerman et HTML5 WebSocket Introduction : Avec le développement rapide d'Internet et la popularité des smartphones, le chat en ligne en temps réel est devenu un élément indispensable de la vie quotidienne des gens. Afin de répondre aux besoins des utilisateurs, les développeurs web recherchent constamment des solutions de chat plus efficaces et en temps réel. Cet article explique comment combiner le framework PHP Workerman et la technologie HTML5 WebSocket pour implémenter un système de chat en ligne simple en temps réel.

Créez une application de chat en temps réel en utilisant PHP et MQTT Créez une application de chat en temps réel en utilisant PHP et MQTT Jul 08, 2023 pm 03:18 PM

Création d'une application de chat en temps réel à l'aide de PHP et MQTT Introduction : Avec le développement rapide d'Internet et la popularité des appareils intelligents, la communication en temps réel est devenue l'une des fonctions essentielles de la société moderne. Afin de répondre aux besoins de communication des gens, développer une application de chat en temps réel est devenu l'objectif poursuivi par de nombreux développeurs. Dans cet article, nous présenterons comment utiliser le protocole PHP et MQTT (MessageQueuingTelemetryTransport) pour créer une application de chat en temps réel. qu'est-ce que

Comment utiliser vue et Element-plus pour implémenter la fonction de chat en temps réel Comment utiliser vue et Element-plus pour implémenter la fonction de chat en temps réel Jul 17, 2023 pm 04:17 PM

Comment utiliser Vue et ElementPlus pour implémenter la fonction de chat en temps réel Introduction : À l'ère actuelle d'Internet, le chat en temps réel est devenu l'un des moyens importants de communication entre les gens. Cet article expliquera comment utiliser Vue et ElementPlus pour implémenter une simple fonction de discussion en temps réel et fournira des exemples de code correspondants. 1. Préparation Avant de commencer le développement, nous devons installer et configurer Vue et ElementPlus. Vous pouvez utiliser VueCLI pour créer un projet Vue et l'installer dans le projet

Comment développer une application de chat en temps réel à l'aide du framework Layui Comment développer une application de chat en temps réel à l'aide du framework Layui Oct 24, 2023 am 10:48 AM

Comment utiliser le framework Layui pour développer une application de chat en temps réel Introduction : De nos jours, le développement des réseaux sociaux est devenu de plus en plus rapide et les méthodes de communication des gens sont progressivement passées des appels téléphoniques et SMS traditionnels au chat en temps réel. Les applications de chat en direct sont devenues un élément indispensable dans la vie des gens, offrant un moyen pratique et rapide de communiquer. Cet article présentera comment utiliser le framework Layui pour développer une application de chat en temps réel, y compris des exemples de code spécifiques. 1. Choisissez une architecture appropriée Avant de commencer le développement, nous devons choisir une architecture appropriée pour prendre en charge le temps réel.

Utilisez le framework PHP CodeIgniter pour développer une application de chat en temps réel afin de fournir des services de communication pratiques Utilisez le framework PHP CodeIgniter pour développer une application de chat en temps réel afin de fournir des services de communication pratiques Jun 27, 2023 pm 02:49 PM

Avec le développement de l’Internet mobile, la messagerie instantanée est devenue de plus en plus importante et populaire. Pour de nombreuses entreprises, le chat en direct s’apparente davantage à un service de communication, offrant une méthode de communication pratique permettant de résoudre rapidement et efficacement les problèmes commerciaux. Sur cette base, cet article présentera comment utiliser le framework PHP CodeIgniter pour développer une application de chat en temps réel. Comprendre le framework CodeIgniter CodeIgniter est un framework PHP léger qui fournit une série d'outils et de bibliothèques simples pour aider rapidement les développeurs

See all articles