WeChat ミニ プログラムの普及に伴い、インスタント メッセージング機能を独自のミニ プログラムに実装したいと考える開発者が増えています。重要なソーシャル機能として、リアルタイム チャットはユーザー インタラクション エクスペリエンスを向上させるだけでなく、アプリケーションの粘着性を高めることもできます。この記事では、PHP と WebSocket プロトコルを使用して、WeChat アプレットのリアルタイム チャット機能を実装する方法を紹介します。
リアルタイム チャットを実現するには、クライアントとサーバーがリアルタイム通信を維持できるようにすることが最も重要です。従来の HTTP リクエストは 1 回限りですが、WebSocket プロトコルは単一の TCP 接続で全二重通信をサポートします。つまり、クライアントとサーバーの両方がアクティブにメッセージを送信できます。
PHP では、 Ratchetライブラリを使用して WebSocket サーバーを簡単に実装できます。 Ratchet を通じて、接続を管理し、メッセージを処理し、データをブロードキャストし、安定したチャット システムを実現できます。
まず、PHP を実行できるサーバー環境を準備する必要があります。Apache または Nginx を使用できます。 Composer をインストールした後、次のコマンドを使用して Ratchet ライブラリをインストールします。
<span class="fun">作曲家には cboden/ratchet が必要です</span>
プロジェクト内にchat_server.phpという名前のファイルを作成し、WebSocket サービスを開始します。サンプルコードは次のとおりです。
require 'vendor/autoload.php';
use Ratchet\MessageComponentInterface;
use Ratchet\ConnectionInterface;
class ChatServer 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);
foreach ($this->clients as $client) {
$client->send(json_encode($data));
}
}
public function onClose(ConnectionInterface $conn) {
$this->clients->detach($conn);
}
public function onError(ConnectionInterface $conn, \Exception $e) {
$conn->close();
}
}
$server = \Ratchet\Server\IoServer::factory(
new \Ratchet\Http\HttpServer(
new \Ratchet\WebSocket\WsServer(
new ChatServer()
)
),
8080
);
$server->run();
このファイルを実行すると、WebSocket サーバーはポート 8080 をリッスンし、WeChat アプレットからの接続を待ちます。
WeChat アプレットでは、 wx.connectSocketメソッドを使用して WebSocket サーバーに接続し、メッセージの送受信ロジックを実装できます。
const socket = wx.connectSocket({
url: 'ws://localhost:8080',
success: function() {
console.log('WebSocket接続成功');
}
});
socket.onOpen(function() {
console.log('WebSocket接続が開いています');
socket.send({
message: 'Hello, WebSocket!'
});
});
socket.onMessage(function(res) {
console.log('受信したメッセージ:', res.data);
});
socket.onClose(function() {
console.log('WebSocket接続が閉じられました');
});
上記のコードを通じて、アプレットは PHP サーバーとリアルタイムで対話し、マルチユーザー オンライン チャットを実現できます。
サーバーのonMessageメソッドでは、クライアントから送信されたメッセージを、データベースへの保存、機密コンテンツのフィルタリング、ユーザー ID の識別など、実際のビジネス ロジックに従って処理できます。処理されたメッセージは、接続されているすべてのクライアントにブロードキャストされ、グループ チャット機能が実装されます。
この記事では、PHP と WebSocket プロトコルを使用して WeChat アプレットのリアルタイム チャット機能を構築する完全なプロセスを紹介します。環境構築からサーバーサイドのRatchet実装、フロントエンドのWebSocket接続例まで、開発者はこの考え方に基づいて独自のリアルタイム通信システムを迅速に構築できます。合理的なビジネス拡張により、プライベートチャット、メッセージ録音、オンラインステータス表示などのより多くの機能も実現できます。