検索
ホームページPHPフレームワークWorkerman労働者育成の実践: 効率的なインスタント メッセージング システムの構築
労働者育成の実践: 効率的なインスタント メッセージング システムの構築Aug 05, 2023 pm 02:03 PM
インスタントメッセージングworkerman実践開発

労働者育成の実践: 効率的なインスタント メッセージング システムの構築

はじめに:
インターネットの急速な発展と、リアルタイム通信に対するユーザーの需要の増大に伴い、インスタント メッセージング システムは一般的な開発となっています。分野。さまざまなリアルタイム通信のニーズを満たすために、PHP オープンソース フレームワーク Workerman を使用して、効率的で安定したインスタント メッセージング システムを構築できます。この記事では、Workerman フレームワークを使用して強力なインスタント メッセージング システムを開発する方法を紹介し、コード例を添付します。

  1. Workerman のインストール:
    まず、Workerman フレームワークをインストールする必要があります。ターミナルで次のコマンドを実行して Workerman をインストールします:

    composer require workerman/workerman

    インストールが完了したら、インスタント メッセージング システムの構築を開始できます。

  2. サーバーの作成:
    server.php という名前の新しい PHP ファイルを作成して、インスタント メッセージング システムのサーバーを構築します。 server.php ファイルには、次のコードを記述する必要があります。
<?php
require_once __DIR__.'/vendor/autoload.php';

use WorkermanWorker;

// 创建一个Worker监听2345端口,使用websocket协议通信
$ws_worker = new Worker("websocket://0.0.0.0:2345");

// 设置进程数
$ws_worker->count = 4;

// 当客户端连接时
$ws_worker->onConnect = function($connection){
    echo "New connection
";
};

// 当客户端发送消息时
$ws_worker->onMessage = function($connection, $data){
    foreach($connection->worker->connections as $clientConnection){
        $clientConnection->send($data);
    }
};

// 当客户端断开连接时
$ws_worker->onClose = function($connection){
    echo "Connection closed
";
};

// 运行worker
Worker::runAll();

上記のコードは、Worker オブジェクトを作成し、ポート 2345 をリッスンし、WebSocket プロトコルを使用して通信します。クライアントが接続されている場合は「新しい接続」が出力され、クライアントがメッセージを送信すると、接続されているすべてのクライアントにメッセージが送信され、クライアントが切断された場合は「接続が閉じられました」が出力されます。最後に、Worker::runAll() メソッドを使用してワーカーを実行します。

  1. クライアントの作成:
    client.php という名前の新しい PHP ファイルを作成します。このファイルは、インスタント メッセージング システムのクライアントの構築に使用されます。 client.php ファイルに、次のコードを記述する必要があります。
<?php
require_once __DIR__.'/vendor/autoload.php';

use WorkermanWorker;
use WorkermanAutoloader;
use WorkermanConnectionAsyncTcpConnection;

$connect_list = array();

// 当用户输入消息时
function onMessage($connect)
{
    // 从终端读取用户输入的消息
    $message = trim(fgets(STDIN));
    
    // 发送消息到服务端
    $connect->send($message);
}

// 创建一个异步TCP连接到服务端
$connect = new AsyncTcpConnection('ws://127.0.0.1:2345');
$connect->onConnect = function($connection){
    echo "Connected to server
";
};
$connect->onMessage = function($connection, $data){
    echo "Received message: ".$data."
";
};
$connect->onClose = function($connection){
    echo "Disconnected from server
";
};

// 运行连接
$connect->connect();

// 将连接对象保存到连接列表中
$connect_list[] = $connect;

// 监听用户输入消息
Worker::addWorker(function(){
    readline_callback_handler_install('', function(){});
    while (true) {
        if (count($GLOBALS['connect_list']) > 0) {
            $read = array_values($GLOBALS['connect_list']);
            $write = null;
            $except = null;
            if (false === ($num_changed_streams = stream_select($read, $write, $except, 1))) {
                continue;
            } elseif ($num_changed_streams > 0) {
                foreach($read as $connect) {
                    onMessage($connect);
                }
            }
        }
    }
});
Worker::runAll();

上記のコードは、AsyncTcpConnection オブジェクトを作成し、サーバーの 2345 ポートに接続します。接続に成功した場合は「サーバーに接続しました」、サーバーから送信されたメッセージを受信した場合は「受信メッセージ: 」と具体的なメッセージ内容が出力され、サーバーとの接続が切断された場合は「サーバーから切断されました」と表示されます。 」と出力されます。同時に、ユーザーが入力したメッセージが監視され、接続オブジェクトを通じてサーバーに送信されます。

  1. インスタント メッセージング システムを実行します:
    ターミナルで次のコマンドを実行してサーバーとクライアントを起動します:

    php server.php
    php client.php

    サーバーとクライアントが実行されます。つまり、リスニング状態になり、相互にメッセージを送信できるようになります。サーバーは、クライアントから送信されたメッセージを受信すると、接続されているすべてのクライアントにメッセージをブロードキャストします。

概要:
この記事では、Workerman を使用して効率的なインスタント メッセージング システムを開発する方法を紹介しました。サーバーとクライアントを構築し、対応するコードを記述することで、リアルタイム通信機能を実現できます。 Workerman は API と関数の完全なセットを提供しており、強力なインスタント メッセージング システムを簡単に構築できます。この記事があなたのお役に立てれば幸いです、読んでいただきありがとうございます!

以上が労働者育成の実践: 効率的なインスタント メッセージング システムの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
workerman和swoole性能谁更好?如何选择?workerman和swoole性能谁更好?如何选择?Dec 01, 2022 am 10:00 AM

workerman 对比 swoole 实际开发项目中,你会选择哪个?对于新手学哪个较好,有什么建议吗?

如何利用Workerman实现PHP和Unity3D的跨平台游戏联机功能如何利用Workerman实现PHP和Unity3D的跨平台游戏联机功能Jul 17, 2023 am 10:21 AM

如何利用Workerman实现PHP和Unity3D的跨平台游戏联机功能随着移动游戏的兴起,跨平台游戏联机功能成为游戏开发者关注的焦点之一。PHP作为一种广泛应用于Web开发的语言,而Unity3D作为一款强大的跨平台游戏引擎,如何实现二者之间的联机功能成为了开发者们思考的问题。本文将介绍如何利用Workerman实现PHP和Unity3D的跨平台游戏联机功

如何利用PHP和Unity3D开发基于Workerman的实时多人游戏如何利用PHP和Unity3D开发基于Workerman的实时多人游戏Jul 18, 2023 am 09:54 AM

如何利用PHP和Unity3D开发基于Workerman的实时多人游戏随着游戏行业的不断发展,实时多人游戏成为了一种趋势。而PHP作为一种广泛使用的服务器端脚本语言和Unity3D作为一种流行的游戏开发引擎,如果能够结合起来开发实时多人游戏,将会带来更加丰富的玩法和用户体验。本文将详细介绍如何利用PHP和Unity3D开发基于Workerman的实时多人游戏

PHP和Unity3D如何利用Workerman实现服务器端推送功能PHP和Unity3D如何利用Workerman实现服务器端推送功能Jul 18, 2023 pm 12:01 PM

PHP和Unity3D如何利用Workerman实现服务器端推送功能在现代的网络应用中,服务器端推送功能(ServerPush)显示了它的强大威力。它可以实时地将信息推送给客户端,而无需客户端不停地向服务器发起请求。在本文中,我们将讨论如何使用PHP和Unity3D结合使用Workerman框架来实现服务器端推送功能。Workerman是一个使用纯PHP编

如何使用Workerman实现PHP和Unity3D的数据统计和分析功能如何使用Workerman实现PHP和Unity3D的数据统计和分析功能Jul 16, 2023 pm 11:43 PM

如何使用Workerman实现PHP和Unity3D的数据统计和分析功能引言:随着互联网的快速发展,数据统计和分析变得愈发重要。在PHP和Unity3D开发过程中,我们经常需要收集和分析用户的行为数据,以便进行产品改进和决策制定。本文将介绍如何使用Workerman这个高性能的PHP开发框架实现PHP和Unity3D之间的数据统计和分析功能。一、Worker

如何使用Workerman实现PHP和Unity3D的多人协同编辑功能如何使用Workerman实现PHP和Unity3D的多人协同编辑功能Jul 17, 2023 pm 04:03 PM

如何使用Workerman实现PHP和Unity3D的多人协同编辑功能引言:在现如今的互联网时代,多人协同编辑已经成为一个非常重要和常见的功能需求。无论是团队合作中的文档编辑,还是多人在线游戏中的场景编辑,都需要实现多人同时编辑同一个文件或场景的功能。本文将介绍如何使用Workerman框架实现PHP和Unity3D的多人协同编辑功能,并提供代码示例。一、什

如何使用Workerman实现PHP和Unity3D的多人在线拼图游戏如何使用Workerman实现PHP和Unity3D的多人在线拼图游戏Jul 17, 2023 pm 10:55 PM

如何使用Workerman实现PHP和Unity3D的多人在线拼图游戏概述:多人在线游戏一直是游戏开发领域的一个热门话题,而拼图游戏作为一种简单、有趣的休闲游戏,也在线上游戏中广受欢迎。本文将介绍如何使用Workerman搭建服务器,并使用PHP和Unity3D开发一个简单的多人在线拼图游戏,实现实时的游戏互动。搭建服务器首先,我们需要搭建一个服务器来提供网

浅析thinkphp6中怎么使用workerman【教程分享】浅析thinkphp6中怎么使用workerman【教程分享】Dec 08, 2022 pm 08:30 PM

thinkphp6中怎么使用workerman?下面本篇文章给大家介绍一下thinkphp6整合workerman的教程,希望对大家有所帮助。

See all articles

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境