Home Backend Development PHP Tutorial Message withdrawal and revocation function of real-time chat system based on PHP

Message withdrawal and revocation function of real-time chat system based on PHP

Aug 26, 2023 am 09:16 AM
Live chat Message withdrawn Undo function

Message withdrawal and revocation function of real-time chat system based on PHP

Message withdrawal and revocation function of real-time chat system based on PHP

Introduction:
With the rapid development and popularity of the Internet, real-time chat system has become a daily important way of communication. When developing a chat system, implementing message recall and revocation functions is a common requirement. This article will introduce how to use PHP to write a real-time chat system based on WebSocket and implement message withdrawal and revocation functions.

  1. Build the environment
    First, we need to set up the PHP environment and WebSocket service. You can choose to use a PHP framework such as Laravel or Symfony, or directly use PHP's native WebSocket library. In the framework, you can use Composer to manage dependencies.
  2. Create database
    We need a database to store chat messages. MySQL or other relational databases can be used. Create a table named chat_messages with the following fields:
  3. id: The unique identifier of the message
  4. sender_id: The user ID of the sender
  5. receiver_id: The user of the receiver ID
  6. message: Message content
  7. timestamp: Message sending time
  8. Real-time chat function
    Use WebSocket protocol to achieve real-time communication. In PHP, a WebSocket server can be implemented using libraries such as Ratchet or Swoole. By listening to the client's messages and connection events, the messages are saved to the database and sent to the recipient in real time.

The following is a simple example using the Ratchet library:

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();
Copy after login
  1. Implementing the message withdrawal and revocation function
    In order to implement the message withdrawal and revocation function, we need to implement the message withdrawal and revocation function in the database Add a column to the table to identify the status of the message. You can add a field named status to indicate the status of the message:
  2. 1: Normal
  3. 2: Withdrawn
  4. 3: Withdrawn

Modify the onMessage function and add the setting of the status field before saving the message to the database:

$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();
Copy after login

To implement the withdrawal function, the client can send a withdrawal instruction to the server and set the corresponding message status to withdrawal:

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;
        }
    }
}
Copy after login

To implement the revocation function, you can send a revocation instruction to the server on the client side, and set the corresponding message status to revocation:

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;
        }
    }
}
Copy after login
  1. Client processing
    On the client side , appropriately display whether the message has been withdrawn or revoked based on the returned message status.

Summary:
This article introduces how to use PHP to build a real-time chat system based on WebSocket and implement message withdrawal and revocation functions. These features can be easily implemented by using the Ratchet library and database to store and process messages. In actual projects, corresponding expansion and optimization can be carried out according to needs.

The above is the detailed content of Message withdrawal and revocation function of real-time chat system based on PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to build a real-time chat app with React and WebSocket How to build a real-time chat app with React and WebSocket Sep 26, 2023 pm 07:46 PM

How to build a real-time chat application using React and WebSocket Introduction: With the rapid development of the Internet, real-time communication has attracted more and more attention. Live chat apps have become an integral part of modern social and work life. This article will introduce how to build a simple real-time chat application using React and WebSocket, and provide specific code examples. 1. Technical preparation Before starting to build a real-time chat application, we need to prepare the following technologies and tools: React: one for building

How to add real-time user chat functionality to your website using PHP and MQTT How to add real-time user chat functionality to your website using PHP and MQTT Jul 08, 2023 pm 07:46 PM

How to use PHP and MQTT to add real-time user chat function to the website. In today's Internet era, website users increasingly need real-time communication and communication. In order to meet this demand, we can use PHP and MQTT to add real-time user chat function to the website. This article will introduce how to use PHP and MQTT to implement the real-time user chat function of the website and provide code examples. Make sure the environment is ready Before starting, make sure you have installed and configured the PHP and MQTT runtime environments. You can use integrated development such as XAMPP

How to implement real-time chat functionality in PHP How to implement real-time chat functionality in PHP Sep 24, 2023 pm 04:49 PM

How to implement real-time chat function in PHP With the popularity of social media and instant messaging applications, real-time chat function has become a standard feature of many websites and applications. In this article, we will explore how to implement live chat functionality using PHP language, along with some code examples. Using WebSocket Protocol Live chat functionality typically requires the use of the WebSocket protocol, which allows two-way communication between the server and the client. In PHP, we can use the Ratchet library to implement WebSocket services

How to use vue and Element-plus to implement real-time chat function How to use vue and Element-plus to implement real-time chat function Jul 17, 2023 pm 04:17 PM

How to use Vue and ElementPlus to implement real-time chat function Introduction: In the current Internet era, real-time chat has become one of the important ways for people to communicate. This article will introduce how to use Vue and ElementPlus to implement a simple real-time chat function and provide corresponding code examples. 1. Preparation Before starting development, we need to install and configure Vue and ElementPlus. You can use VueCLI to create a Vue project and install it in the project

Build a real-time chat application using PHP and MQTT Build a real-time chat application using PHP and MQTT Jul 08, 2023 pm 03:18 PM

Building a real-time chat application using PHP and MQTT Introduction: With the rapid development of the Internet and the popularity of smart devices, real-time communication has become one of the essential functions in modern society. In order to meet people's communication needs, developing a real-time chat application has become the goal pursued by many developers. In this article, we will introduce how to use PHP and MQTT (MessageQueuingTelemetryTransport) protocol to build a real-time chat application. what is

Real-time online chat using workerman and HTML5 WebSocket technology Real-time online chat using workerman and HTML5 WebSocket technology Sep 09, 2023 am 11:00 AM

Real-time online chat using Workerman and HTML5 WebSocket technology Introduction: With the rapid development of the Internet and the popularity of smartphones, real-time online chat has become an indispensable part of people's daily lives. In order to meet the needs of users, web developers are constantly looking for more efficient and real-time chat solutions. This article will introduce how to combine the PHP framework Workerman and HTML5 WebSocket technology to implement a simple real-time online chat system.

How to develop a real-time chat application using the Layui framework How to develop a real-time chat application using the Layui framework Oct 24, 2023 am 10:48 AM

How to use the Layui framework to develop a real-time chat application Introduction: Nowadays, the development of social networks has become more and more rapid, and people's communication methods have gradually shifted from traditional phone calls and text messages to real-time chat. Live chat applications have become an indispensable part of people's lives, providing a convenient and fast way to communicate. This article will introduce how to use the Layui framework to develop a real-time chat application, including specific code examples. 1. Choose a suitable architecture. Before starting development, we need to choose a suitable architecture to support real-time

Message reading status and unread message reminder of PHP real-time chat system Message reading status and unread message reminder of PHP real-time chat system Aug 13, 2023 pm 06:58 PM

Message reading status and unread message reminder of PHP real-time chat system In modern social networks and instant messaging applications, message reading status and unread message reminder are essential functions. In the PHP real-time chat system, we can implement these functions through some simple codes. This article will introduce how to use PHP to implement the functions of message reading status and unread message reminder, and provide corresponding code examples. Message reading status First, we need to add a field to the message table in the database to represent the reading status of the message.

See all articles