ホームページ バックエンド開発 PHPチュートリアル PHPベースのリアルタイムチャットシステムのメッセージ取消・取消し機能

PHPベースのリアルタイムチャットシステムのメッセージ取消・取消し機能

Aug 26, 2023 am 09:16 AM
ライブチャット メッセージが取り消されました アンドゥ機能

PHPベースのリアルタイムチャットシステムのメッセージ取消・取消し機能

PHP ベースのリアルタイム チャット システムのメッセージの撤回および取り消し機能

はじめに:
インターネットの急速な発展と普及により、リアルタイムチャット システムは日常の重要なコミュニケーション手段となっています。チャット システムを開発する場合、メッセージの取り消しおよび取り消し機能の実装は一般的な要件です。この記事では、PHP を使用して WebSocket ベースのリアルタイム チャット システムを作成し、メッセージの取り消しと取り消し機能を実装する方法を紹介します。

  1. 環境の構築
    まず、PHP 環境と WebSocket サービスをセットアップする必要があります。 Laravel や Symfony などの PHP フレームワークを使用するか、PHP のネイティブ WebSocket ライブラリを直接使用するかを選択できます。フレームワークでは、Composer を使用して依存関係を管理できます。
  2. データベースの作成
    チャット メッセージを保存するデータベースが必要です。 MySQL またはその他のリレーショナル データベースを使用できます。次のフィールドを含む chat_messages という名前のテーブルを作成します。
  3. id: メッセージの一意の識別子
  4. sender_id: 送信者のユーザー ID
  5. receiver_id: メッセージのユーザー受信者ID
  6. message: メッセージ内容
  7. timestamp: メッセージ送信時刻
  8. リアルタイムチャット機能
    WebSocketプロトコルを使用し、リアルタイム通信を実現します。 PHP では、Ratchet や Swoole などのライブラリを使用して WebSocket サーバーを実装できます。クライアントのメッセージと接続イベントをリッスンすることにより、メッセージはデータベースに保存され、リアルタイムで受信者に送信されます。

次に、Ratchet ライブラリを使用した簡単な例を示します。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

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();

ログイン後にコピー
  1. メッセージの取り消しと取り消し機能の実装
    メッセージの取り消しと取り消し機能を実装するには、データベースにメッセージの取り消しと取り消しの機能を実装する必要があります。メッセージのステータスを識別するためにテーブルに列を追加します。 status という名前のフィールドを追加して、メッセージのステータスを示すことができます:
  2. 1: Normal
  3. 2: Withdrawn
  4. 3: Withdrawn
  5. onMessage 関数を変更し、メッセージをデータベースに保存する前にステータス フィールドの設定を追加します。

1

2

3

4

5

6

7

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

ログイン後にコピー

引き出し機能を実装するには、クライアントはサーバーに引き出し指示を送信し、対応するメッセージ ステータスを設定します。取り消しへ:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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;

        }

    }

}

ログイン後にコピー

取り消し機能を実装するには、クライアント側のサーバーに取り消し指示を送信し、対応するメッセージ ステータスを取り消しに設定します:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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;

        }

    }

}

ログイン後にコピー

Client処理
    クライアント側では、返されたメッセージのステータスに基づいて、メッセージが取り下げられたか取り消されたかを適切に表示します。

  1. 概要:
この記事では、PHP を使用して WebSocket ベースのリアルタイム チャット システムを構築し、メッセージの取り消しと取り消し機能を実装する方法を紹介します。これらの機能は、Ratchet ライブラリとデータベースを使用してメッセージを保存および処理することで簡単に実装できます。実際のプロジェクトでは、ニーズに応じて対応する拡張や最適化を行うことができます。

以上がPHPベースのリアルタイムチャットシステムのメッセージ取消・取消し機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

React と WebSocket を使用してリアルタイム チャット アプリを構築する方法 React と WebSocket を使用してリアルタイム チャット アプリを構築する方法 Sep 26, 2023 pm 07:46 PM

React と WebSocket を使用してリアルタイム チャット アプリケーションを構築する方法 はじめに: インターネットの急速な発展に伴い、リアルタイム コミュニケーションがますます注目を集めています。ライブチャット アプリは、現代の社会生活や仕事生活に不可欠な部分になっています。この記事では、React と WebSocket を使用して簡単なリアルタイム チャット アプリケーションを構築する方法と、具体的なコード例を紹介します。 1. 技術的な準備 リアルタイム チャット アプリケーションの構築を開始する前に、次のテクノロジとツールを準備する必要があります。 React: 構築用の 1 つ

PHP と MQTT を使用して、リアルタイムのユーザー チャット機能を Web サイトに追加する方法 PHP と MQTT を使用して、リアルタイムのユーザー チャット機能を Web サイトに追加する方法 Jul 08, 2023 pm 07:46 PM

PHP と MQTT を使用して Web サイトにリアルタイムのユーザー チャット機能を追加する方法 今日のインターネット時代、Web サイト ユーザーはますますリアルタイムの通信とコミュニケーションを必要としています。この需要を満たすために、PHP と MQTT を使用してリアルタイムのユーザー チャット機能を追加できます。 - ウェブサイトへのユーザーチャット機能。この記事では、PHP と MQTT を使用して Web サイトのリアルタイム ユーザー チャット機能を実装する方法とコード例を紹介します。環境の準備ができていることを確認する 開始する前に、PHP および MQTT ランタイム環境がインストールおよび構成されていることを確認してください。 XAMPPなどの統合開発が利用可能

PHPでリアルタイムチャット機能を実装する方法 PHPでリアルタイムチャット機能を実装する方法 Sep 24, 2023 pm 04:49 PM

PHP でリアルタイム チャット機能を実装する方法 ソーシャル メディアやインスタント メッセージング アプリケーションの人気に伴い、リアルタイム チャット機能は多くの Web サイトやアプリケーションの標準機能になりました。この記事では、PHP 言語を使用してライブ チャット機能を実装する方法と、いくつかのコード例を説明します。 WebSocket プロトコルの使用 ライブ チャット機能では通常、サーバーとクライアント間の双方向通信を可能にする WebSocket プロトコルの使用が必要です。 PHP では、Ratchet ライブラリを使用して WebSocket サービスを実装できます。

vueとElement-plusを使ってリアルタイムチャット機能を実装する方法 vueとElement-plusを使ってリアルタイムチャット機能を実装する方法 Jul 17, 2023 pm 04:17 PM

Vue と ElementPlus を使用してリアルタイム チャット機能を実装する方法 はじめに: 現在のインターネット時代において、リアルタイム チャットは人々がコミュニケーションを図るための重要な方法の 1 つとなっています。この記事では、Vue と ElementPlus を使用して簡単なリアルタイム チャット機能を実装する方法と、対応するコード例を紹介します。 1. 準備 開発を開始する前に、Vue と ElementPlus をインストールして設定する必要があります。 VueCLI を使用して Vue プロジェクトを作成し、プロジェクトにインストールできます。

PHP と MQTT を使用してリアルタイム チャット アプリケーションを構築する PHP と MQTT を使用してリアルタイム チャット アプリケーションを構築する Jul 08, 2023 pm 03:18 PM

PHP と MQTT を使用したリアルタイム チャット アプリケーションの構築 はじめに: インターネットの急速な発展とスマート デバイスの普及により、リアルタイム コミュニケーションは現代社会において不可欠な機能の 1 つになりました。人々のコミュニケーションのニーズを満たすために、リアルタイム チャット アプリケーションの開発は多くの開発者によって追求される目標となっています。この記事では、PHP と MQTT (MessageQueuingTelemetryTransport) プロトコルを使用してリアルタイム チャット アプリケーションを構築する方法を紹介します。とは

Workerman と HTML5 WebSocket テクノロジーを使用したリアルタイム オンライン チャット Workerman と HTML5 WebSocket テクノロジーを使用したリアルタイム オンライン チャット Sep 09, 2023 am 11:00 AM

Workerman および HTML5 WebSocket テクノロジを使用したリアルタイム オンライン チャット はじめに: インターネットの急速な発展とスマートフォンの普及により、リアルタイム オンライン チャットは人々の日常生活に不可欠な部分になりました。ユーザーのニーズを満たすために、Web 開発者はより効率的でリアルタイムのチャット ソリューションを常に探しています。この記事では、PHP フレームワーク Workerman と HTML5 WebSocket テクノロジーを組み合わせて、シンプルなリアルタイム オンライン チャット システムを実装する方法を紹介します。

Layui フレームワークを使用してリアルタイム チャット アプリケーションを開発する方法 Layui フレームワークを使用してリアルタイム チャット アプリケーションを開発する方法 Oct 24, 2023 am 10:48 AM

Layui フレームワークを使用してリアルタイム チャット アプリケーションを開発する方法 はじめに: 現在、ソーシャル ネットワークの発展はますます急速に進んでおり、人々のコミュニケーション方法は従来の電話やテキスト メッセージからリアルタイム チャットに徐々に移行しています。ライブ チャット アプリケーションは人々の生活に欠かせないものとなり、便利で迅速なコミュニケーション手段を提供します。この記事では、Layui フレームワークを使用してリアルタイム チャット アプリケーションを開発する方法を、具体的なコード例を含めて紹介します。 1. 適切なアーキテクチャの選択 開発を開始する前に、リアルタイムをサポートする適切なアーキテクチャを選択する必要があります。

PHPリアルタイムチャットシステムのメッセージ既読ステータスと未読メッセージリマインダー PHPリアルタイムチャットシステムのメッセージ既読ステータスと未読メッセージリマインダー Aug 13, 2023 pm 06:58 PM

PHP リアルタイム チャット システムのメッセージ既読ステータスと未読メッセージ リマインダー 最新のソーシャル ネットワークやインスタント メッセージング アプリケーションでは、メッセージ既読ステータスと未読メッセージ リマインダーは不可欠な機能です。 PHP リアルタイム チャット システムでは、いくつかの簡単なコードを通じてこれらの機能を実装できます。この記事では、PHP を使用してメッセージの既読ステータスと未読メッセージのリマインダーの機能を実装する方法と、対応するコード例を紹介します。メッセージの読み取りステータス まず、メッセージの読み取りステータスを表すフィールドをデータベースのメッセージ テーブルに追加する必要があります。

See all articles