Rumah > rangka kerja php > Workerman > Amalan pembangunan pekerja: membina sistem pemesejan segera yang cekap

Amalan pembangunan pekerja: membina sistem pemesejan segera yang cekap

PHPz
Lepaskan: 2023-08-05 14:03:15
asal
1164 orang telah melayarinya

Amalan Pembangunan Pekerja: Membina Sistem Pemesejan Segera yang Cekap

Pengenalan:
Dengan perkembangan pesat Internet dan permintaan pengguna yang semakin meningkat untuk komunikasi masa nyata, sistem pemesejan segera telah menjadi bidang pembangunan yang popular. Untuk memenuhi pelbagai keperluan komunikasi masa nyata, kami boleh menggunakan rangka kerja sumber terbuka PHP Workerman untuk membina sistem pemesejan segera yang cekap dan stabil. Artikel ini akan memperkenalkan cara menggunakan rangka kerja Workerman untuk membangunkan sistem pemesejan segera yang berkuasa dan melampirkan contoh kod.

  1. Pasang Workerman:
    Mula-mula, kita perlu memasang rangka kerja Workerman. Jalankan arahan berikut dalam terminal untuk memasang Workerman:

    composer require workerman/workerman
    Salin selepas log masuk

    Selepas pemasangan selesai, kita boleh mula membina sistem pemesejan segera.

  2. Buat pelayan:
    Buat fail PHP baharu bernama server.php untuk membina pelayan sistem pemesejan segera. Dalam fail server.php, kita perlu menulis kod berikut:
<?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();
Salin selepas log masuk

Kod di atas mencipta objek Worker, mendengar port 2345 dan berkomunikasi menggunakan protokol WebSocket. Apabila pelanggan disambungkan, "Sambungan baharu" adalah output apabila pelanggan menghantar mesej, mesej dihantar kepada semua pelanggan yang disambungkan apabila pelanggan diputuskan, "Sambungan ditutup" adalah output; Akhir sekali, gunakan kaedah Worker::runAll() untuk menjalankan Worker.

  1. Buat klien:
    Buat fail PHP baharu bernama client.php, yang digunakan untuk membina klien sistem pemesejan segera. Dalam fail client.php, kita perlu menulis kod berikut:
<?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();
Salin selepas log masuk

Kod di atas mencipta objek AsyncTcpConnection dan menyambung ke port 2345 pelayan. Apabila sambungan berjaya, "Disambungkan ke pelayan" dikeluarkan apabila mesej yang dihantar oleh pelayan diterima, "Mesej yang diterima: " dan kandungan mesej tertentu dikeluarkan apabila sambungan diputuskan dari pelayan; "adalah output. Pada masa yang sama, input mesej oleh pengguna dipantau dan dihantar ke pelayan melalui objek sambungan.

  1. Jalankan sistem pemesejan segera:
    Di terminal, laksanakan arahan berikut untuk memulakan pelayan dan klien masing-masing:

    php server.php
    php client.php
    Salin selepas log masuk

    Selepas pelaksanaan, pelayan dan klien akan memasuki keadaan mendengar dan boleh menghantar mesej antara satu sama lain. . Apabila pelayan menerima mesej yang dihantar oleh pelanggan, ia menyiarkan mesej itu kepada semua pelanggan yang bersambung.

Ringkasan:
Dalam artikel ini, kami memperkenalkan cara menggunakan Workerman untuk membangunkan sistem pemesejan segera yang cekap. Dengan membina pelayan dan klien serta menulis kod yang sepadan, kami boleh mencapai fungsi komunikasi masa nyata. Workerman menyediakan set lengkap API dan fungsi, membolehkan kami membina sistem pemesejan segera yang berkuasa dengan mudah. Saya harap artikel ini berguna kepada anda, terima kasih kerana membaca!

Atas ialah kandungan terperinci Amalan pembangunan pekerja: membina sistem pemesejan segera yang cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan