Rumah > rangka kerja php > Workerman > teks badan

Cara menggunakan pekerja pekerja untuk menolak dan menerima mesej dalam masa nyata

王林
Lepaskan: 2023-09-08 13:42:23
asal
840 orang telah melayarinya

Cara menggunakan pekerja pekerja untuk menolak dan menerima mesej dalam masa nyata

Cara menggunakan pekerja pekerja untuk mencapai push masa nyata dan menerima mesej

Dengan perkembangan pesat Internet, push mesej masa nyata telah menjadi satu kemestian untuk banyak keperluan aplikasi. Dalam pelaksanaan sebelumnya, pelayan biasanya ditinjau untuk memeriksa sama ada terdapat mesej baharu dan kemudian ditolak. Kaedah ini bukan sahaja tidak cekap, tetapi juga meningkatkan beban pada pelayan. Kini, terdapat cara yang lebih cekap untuk melaksanakannya, iaitu menggunakan rangka kerja Workerman untuk mencapai tolakan dan penerimaan mesej masa nyata.

Workerman ialah rangka kerja PHP dipacu acara berprestasi tinggi yang direka untuk menyelesaikan masalah yang PHP tidak dapat mengekalkan sambungan yang panjang. Ia menggunakan pelaksanaan I/O tidak segerak tak segerak PHP dan boleh mengendalikan sejumlah besar sambungan serentak untuk mencapai tolakan dan penerimaan mesej masa nyata.

Berikut ialah langkah dan contoh kod untuk menggunakan pekerja pekerja untuk melaksanakan push dan menerima mesej masa nyata:

  1. Pasang workerman
  2. #🎜🎜🎜 ##🎜🎜 #Pertama, anda perlu memasang workererman pada pelayan. Anda boleh memasangnya menggunakan komposer dengan arahan berikut:
composer require workerman/workerman
Salin selepas log masuk

Buat pelayan push mesej
  1. Seterusnya, buat fail PHP bernama push_server. php, sebagai pelayan push mesej.
<?php
require_once __DIR__ . '/vendor/autoload.php';

use WorkermanWorker;

$pusher = new Worker();
$pusher->count = 4;

$pusher->onWorkerStart = function ($pusher) {
    $inner_ws = new Worker('websocket://127.0.0.1:8000');
    
    $inner_ws->onConnect = function ($connection) {
        echo "New client connected
";
    };
    
    $inner_ws->onMessage = function ($connection, $data) use ($pusher) {
        echo "Received message: $data
";
        
        // 接收到消息后,将消息推送给所有在线客户端
        foreach ($pusher->connections as $client) {
            $client->send($data);
        }
    };
    
    $inner_ws->onClose = function ($connection) {
        echo "Client closed
";
    };
    
    Worker::runAll();
};
Salin selepas log masuk

Buat pelayan penerima mesej
  1. Kemudian, cipta fail PHP bernama receive_server.php sebagai pelayan penerima mesej.
<?php
require_once __DIR__ . '/vendor/autoload.php';

use WorkermanWorker;

$receiver = new Worker();
$receiver->count = 4;

$receiver->onWorkerStart = function ($receiver) {
    $ws = new Worker('websocket://127.0.0.1:8001');
    
    $ws->onConnect = function ($connection) {
        echo "New client connected
";
    };
    
    $ws->onMessage = function ($connection, $data) {
        echo "Received message: $data
";
        
        // 处理接收到的消息
        // ...
    };
    
    $ws->onClose = function ($connection) {
        echo "Client closed
";
    };
    
    Worker::runAll();
};
Salin selepas log masuk

Mulakan pelayan
  1. Akhir sekali, mulakan pelayan push mesej dan pelayan penerima mesej masing-masing melalui baris arahan.
php push_server.php start
Salin selepas log masuk
php receive_server.php start
Salin selepas log masuk

Pada ketika ini, tolakan masa nyata dan penerimaan mesej selesai.

Dalam aplikasi sebenar, pengembangan dan pengoptimuman fungsi yang sepadan boleh dijalankan mengikut keperluan. Sebagai contoh, anda boleh menambah mekanisme pengesahan dan kebenaran untuk menyekat hanya pengguna yang disahkan untuk menolak dan menerima mesej anda juga boleh meneruskan mesej ke dalam pangkalan data supaya pengguna luar talian boleh menerima mesej mereka yang belum dibaca selepas mereka pergi dalam talian, dsb. tunggu.

Untuk meringkaskan, dengan menggunakan rangka kerja pekerja, kami boleh mencapai tolakan dan penerimaan mesej masa nyata yang cekap. Ciri tak segerak dan tidak menyekatnya membolehkan pelayan mengendalikan sejumlah besar sambungan serentak, sekali gus meningkatkan kecekapan penghantaran mesej. Saya harap artikel ini akan membantu anda memahami dan menggunakan workererman untuk mencapai push dan menerima mesej masa nyata.

Atas ialah kandungan terperinci Cara menggunakan pekerja pekerja untuk menolak dan menerima mesej dalam masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!