Artikel ini menunjukkan membina aplikasi masa nyata menggunakan pelayan Websocket PHP Workerman. IT memperincikan penciptaan pelayan, pengendalian mesej, pengurusan ralat, dan pengendalian sambungan serentak yang cekap melalui proses pekerja dan operasi tak segerak
Workerman menyediakan cara yang mudah untuk membuat pelayan WebSocket yang mantap untuk aplikasi masa nyata. Proses teras melibatkan penggunaan sokongan WebSocket terbina dalamnya. Inilah panduan langkah demi langkah:
composer require workerman/workerman
websocket_server.php
). Fail ini akan mengandungi logik pelayan anda. Contoh asas kelihatan seperti ini:<code class="php"><?php require_once __DIR__ . '/vendor/autoload.php'; use Workerman\Worker; use Workerman\Connection\ConnectionInterface; use Workerman\Protocols\Http\Request; $ws_worker = new Worker('websocket://0.0.0.0:8080'); $ws_worker->count = 4; // Adjust based on your needs; number of worker processes $ws_worker->onMessage = function(ConnectionInterface $connection, $data) { // Process incoming messages $connection->send('Hello from Workerman! You sent: ' . $data); // Broadcast to all connected clients (optional): // foreach($ws_worker->connections as $client){ // $client->send($data); // } }; $ws_worker->onClose = function(ConnectionInterface $connection) { // Handle client disconnections echo "Connection closed\n"; }; $ws_worker->onError = function(ConnectionInterface $connection, $code, $msg) { // Handle errors echo "Error: $msg\n"; }; Worker::runAll();</code>
websocket_server.php
in your terminal and run the command php websocket_server.php start
. Ini memulakan pelayan WebSocket. Anda kemudiannya boleh menyambung kepadanya menggunakan klien WebSocket (seperti penyemak imbas dengan JavaScript atau pelanggan WebSocket yang berdedikasi).onMessage
callback function receives incoming messages from clients. You can process these messages and send responses back using $connection->send()
. Contoh di atas bergema mesej yang diterima kembali kepada pelanggan. Ingat untuk melaksanakan logik aplikasi anda dalam fungsi ini.onClose
and onError
callbacks handle client disconnections and server errors, allowing for graceful handling and logging.Workerman menawarkan beberapa kelebihan ke atas kerangka lain untuk membina aplikasi WebSocket masa nyata:
Sifat asynchronous yang ada di Workerman membolehkan ia mengendalikan pelbagai sambungan serentak dengan cekap. Aspek utama adalah:
$ws_worker->count
property in the example code controls the number of worker processes. Meningkatkan nombor ini (dalam alasan, berdasarkan sumber pelayan anda) membolehkan pelayan mengendalikan lebih banyak sambungan serentak. Setiap proses mengendalikan subset sambungan.Beberapa perangkap biasa boleh timbul apabila membangunkan pelayan WebSocket dengan Workerman:
onMessage
callback. Ini boleh menyekat gelung acara dan menghalang keupayaan pelayan untuk mengendalikan sambungan lain. Gunakan operasi asynchronous atau offload tugas jangka panjang untuk memisahkan proses atau benang.onError
callback to catch and log errors effectively. Ini membantu dalam menyahpepijat dan mengekalkan kestabilan pelayan.php-fpm
's error logs or system logs for more insights. If using a development environment, you can start the server with the -d
flag to run in the background and see logs more easily.Langkah Penyelesaian Masalah:
xdebug
) to step through your code and identify the source of errors.Dengan berhati -hati mempertimbangkan perkara ini dan melaksanakan pengendalian ralat yang sesuai, anda boleh membina pelayan WebSocket yang boleh dipercayai dan berskala menggunakan Workerman.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan Workerman untuk membina pelayan websocket untuk komunikasi masa nyata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!