Rumah > Artikel > rangka kerja php > 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:
composer require workerman/workermanBuat 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(); };Buat 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(); };Mulakan pelayan
php push_server.php start
php receive_server.php start
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!