ホームページ > バックエンド開発 > PHPチュートリアル > PHP およびミニ プログラムを使用したオンライン チャットおよびインスタント メッセージングの技術ガイド

PHP およびミニ プログラムを使用したオンライン チャットおよびインスタント メッセージングの技術ガイド

WBOY
リリース: 2023-07-04 20:32:01
オリジナル
1437 人が閲覧しました

PHP およびミニ プログラムを使用したオンライン チャットおよびインスタント メッセージングのテクニカル ガイド

はじめに:
今日のインターネット時代において、インスタント メッセージングおよびオンライン チャットに対する人々の需要はますます高まっています。スマートフォンの普及により、小さなプログラムが多くの企業や個人に選ばれる開発プラットフォームになりました。この記事では、PHP とミニ プログラムを使用してオンライン チャットとインスタント メッセージング機能を実装する方法を紹介し、読者の参考となるコード例を示します。

1. ミニ プログラムの概要
ミニ プログラムは WeChat プラットフォームに基づくアプリケーションであり、WeChat を通じて配布および使用されます。軽量かつ高速で、比較的シンプルな機能を備えているため、単純なシーンに非常に適しています。ミニプログラムはフロントエンド技術を利用して開発され、主にWeChatが提供する開発言語WXML、WXSS、JavaScriptを使用します。

2. オンライン チャットとインスタント メッセージングの概要
オンライン チャットとは、インターネット上でリアルタイムでメッセージを送信し、通信する方法を指します。インスタント メッセージングは​​、ユーザー間のリアルタイム通信のためのテクノロジーを指します。オンライン チャットとインスタント メッセージングは​​、クライアントとサーバーの 2 つの部分に分けることができます。クライアントはメッセージの送受信を担当し、サーバーはメッセージの保存と転送を担当します。

3. PHP はサーバー側関数を実装します
PHP では、WebSocket プロトコルを使用してオンライン チャットおよびインスタント メッセージング機能を実装できます。 WebSocket は、同じ TCP 接続上で全二重通信を可能にする TCP ベースのプロトコルです。 PHP では、Ratchet ライブラリを使用して WebSocket 機能を実装できます。

まず、Ratchet ライブラリをインストールする必要があります。ターミナルで次のコマンドを実行します。

composer require cboden/ratchet
ログイン後にコピー

以下は、単純な PHP WebSocket サーバーの例です。

<?php
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) {
        // 收到消息时调用
        $numRecv = count($this->clients) - 1;
        foreach ($this->clients as $client) {
            if ($from !== $client) {
                // 给所有其他连接发送消息
                $client->send($msg);
            }
        }
    }

    public function onClose(ConnectionInterface $conn) {
        // 连接关闭时调用
        $this->clients->detach($conn);
    }

    public function onError(ConnectionInterface $conn, Exception $e) {
        // 发生错误时调用
        echo "An error occurred: " . $e->getMessage() . "
";
        $conn->close();
    }
}

// 创建并运行WebSocket服务器
$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
    8080
);
$server->run();
?>
ログイン後にコピー

上記のコードでは、WebSocket メッセージを処理する Chat クラスを作成しました。 onMessage メソッドでは、すべての接続を横断してメッセージを送信することにより、メッセージ転送機能を実装します。

コマンド ラインで上記のコードを実行して、WebSocket サーバーを起動します。

4. ミニ プログラムはクライアント機能を実装します
ミニ プログラムでは、開発とデバッグに WeChat 開発者ツールを使用できます。

まず、ミニ プログラムの app.json ファイルに権限設定を追加する必要があります:

{
  "permission": {
    "scope.userLocation": {
      "desc": "使用通信功能"
    }
  }
}
ログイン後にコピー

次に、ページで wx.connectSocket() メソッドを使用して接続します。 WebSocket サーバー、および関連イベントのリッスン:

Page({
  data: {
    messages: [],
    inputMessage: ''
  },
  onLoad: function () {
    var that = this
    wx.connectSocket({
      url: 'ws://localhost:8080'
    })
    wx.onSocketOpen(function () {
      console.log('连接成功')
    })
    wx.onSocketMessage(function (res) {
      console.log('收到消息:', res.data)
      that.data.messages.push(res.data)
      that.setData({
        messages: that.data.messages
      })
    })
    wx.onSocketClose(function () {
      console.log('连接关闭')
    })
    wx.onSocketError(function (res) {
      console.log('连接失败', res)
    })
  },
  onUnload: function () {
    wx.closeSocket()
  },
  bindInputMessage: function (e) {
    this.setData({
      inputMessage: e.detail.value
    })
  },
  sendMessage: function () {
    var message = this.data.inputMessage
    wx.sendSocketMessage({
      data: message
    })
    this.setData({
      inputMessage: ''
    })
  }
})
ログイン後にコピー

上記のコードでは、ページの onLoad メソッドで wx.connectSocket() メソッドを使用して WebSocket サーバーに接続します。 onSocketMessage メソッドでは、サーバーから送信されたメッセージをリッスンし、ページのデータに保存します。 sendMessage メソッドでは、wx.sendSocketMessage() メソッドを使用してサーバーにメッセージを送信します。

5. 概要
この記事では、PHP と小さなプログラムを使用してオンライン チャットとインスタント メッセージング機能を実装する方法を紹介します。 WebSocket プロトコルと Ratchet ライブラリを使用すると、PHP でサーバーを簡単に構築できます。アプレットでは、wx.connectSocket() メソッドを使用してサーバーに接続し、wx.sendSocketMessage() メソッドを使用してメッセージを送信できます。この記事が、オンライン チャットやインスタント メッセージ機能を実装する際の読者の参考になれば幸いです。

参考:
Ratchet ドキュメント: http://socketo.me/
WeChat ミニ プログラム開発ドキュメント: https://developers.weixin.qq.com/miniprogram/dev/index.html

以上がPHP およびミニ プログラムを使用したオンライン チャットおよびインスタント メッセージングの技術ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート