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.
Pasang Workerman:
Mula-mula, kita perlu memasang rangka kerja Workerman. Jalankan arahan berikut dalam terminal untuk memasang Workerman:
composer require workerman/workerman
Selepas pemasangan selesai, kita boleh mula membina sistem pemesejan segera.
<?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();
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.
<?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();
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.
Jalankan sistem pemesejan segera:
Di terminal, laksanakan arahan berikut untuk memulakan pelayan dan klien masing-masing:
php server.php php client.php
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!