Rumah rangka kerja php Workerman Amalan pengaturcaraan rangkaian pekerja: cipta sistem pemesejan segera berprestasi tinggi

Amalan pengaturcaraan rangkaian pekerja: cipta sistem pemesejan segera berprestasi tinggi

Aug 05, 2023 pm 01:29 PM
workerman pengaturcaraan rangkaian sistem pesanan segera

Amalan pengaturcaraan rangkaian pekerja: membina sistem pemesejan segera berprestasi tinggi

Pengenalan:
Dengan perkembangan pesat Internet, sistem pemesejan segera telah menarik lebih banyak perhatian daripada pengguna. Sistem pemesejan segera tradisional, seperti QQ, WeChat, dsb., sering menghadapi kesesakan prestasi apabila bilangan pengguna ramai dan mesej sangat serentak. Untuk menyelesaikan masalah ini, projek sumber terbuka Workerman telah wujud. Artikel ini akan memperkenalkan cara menggunakan Workerman untuk membina sistem pemesejan segera berprestasi tinggi.

  1. Pengenalan kepada Workerman
    Workerman ialah rangka kerja komunikasi rangkaian berprestasi tinggi yang dibangunkan berdasarkan PHP. Berbanding dengan mod pengendalian PHP tradisional, seperti Apache, Nginx, dsb., Workerman menggunakan mod operasi tak segerak dan tidak menyekat sepenuhnya, yang meningkatkan kecekapan komunikasi rangkaian. Pada masa yang sama, Workerman menyokong berbilang protokol, seperti TCP, UDP, dll., membolehkan kami memilih secara fleksibel mengikut keperluan yang berbeza. Di samping itu, Workerman juga mempunyai sokongan yang sangat baik untuk konkurensi yang tinggi dan dapat dengan mudah mengatasi tekanan sebilangan besar pengguna.
  2. Persediaan
    Untuk mula membangunkan sistem pemesejan segera kami, kami perlu memasang Workerman terlebih dahulu. Ia boleh dipasang melalui arahan berikut:
composer require workerman/workerman
Salin selepas log masuk

Selepas pemasangan selesai, kita boleh menggunakan semua ciri Workerman.

  1. Buat pelayan TCP
    Kami mula-mula mencipta pelayan TCP mudah, mendengar pada port yang ditentukan. Apabila pengguna menyambung ke pelayan, pelayan mengembalikan mesej alu-aluan dan menerima mesej yang dihantar oleh pengguna. Berikut ialah contoh kod mudah:
use WorkermanWorker;

// 创建一个Worker监听端口
$tcp_worker = new Worker("tcp://0.0.0.0:1234");

// 当客户端连接时的回调函数
$tcp_worker->onConnect = function ($connection) {
    $connection->send("Welcome to the chat room!
");
};

// 当接收到客户端消息时的回调函数
$tcp_worker->onMessage = function ($connection, $data) {
    // 处理接收到的消息
    echo "Received message: " . $data . "
";
    $connection->send("You said: " . $data . "
");
};

// 启动Worker
Worker::runAll();
Salin selepas log masuk

Dengan kod di atas, kami mencipta TCP Worker mendengar pada port 1234. Apabila pelanggan menyambung ke pelayan, pelayan menghantar mesej alu-aluan. Apabila pelanggan menghantar mesej, pelayan mengembalikan mesej tidak berubah. Anda boleh menggunakan alat seperti Telnet untuk menyambung ke pelayan untuk ujian.

  1. Buat Pelayan WebSocket
    WebSocket ialah protokol komunikasi dupleks penuh yang boleh mewujudkan sambungan berterusan antara pelanggan dan pelayan. Workerman menyokong protokol WebSocket, dan kami boleh menggunakan Workerman untuk mencipta pelayan WebSocket. Berikut ialah contoh kod ringkas:
use WorkermanWorker;
use WorkermanProtocolsWebsocket;

// 创建一个WebSocket Worker监听端口
$websocket_worker = new Worker("websocket://0.0.0.0:1234");

// 设置协议处理类
$websocket_worker->onWebSocketConnect = function ($connection, $http_header) {
    // 处理握手请求
    Websocket::dealHandshake($connection, $http_header);
    // 发送欢迎消息
    $connection->send("Welcome to the chat room!
");
};

// 当接收到客户端消息时的回调函数
$websocket_worker->onMessage = function ($connection, $data) {
    // 处理接收到的消息
    echo "Received message: " . $data . "
";
    $connection->send("You said: " . $data . "
");
};

// 启动Worker
Worker::runAll();
Salin selepas log masuk

Dengan kod di atas, kami mencipta WebSocket Worker mendengar pada port 1234. Apabila pelanggan menyambung ke pelayan, pelayan menghantar mesej alu-aluan. Apabila pelanggan menghantar mesej, pelayan mengembalikan mesej tidak berubah.

  1. Melaksanakan sistem pesanan segera
    Dengan asas di atas, kami boleh terus melaksanakan sistem pesanan segera yang lebih lengkap. Kami menggunakan protokol WebSocket untuk pembangunan di sini.

Pertama, buat pelayan WebSocket mendengar pada port yang ditentukan. Apabila pengguna menyambung ke pelayan, pelayan akan menambah sambungan ke senarai pengguna dan menyiarkan mesej bahawa pengguna telah memasuki bilik sembang apabila pengguna menghantar mesej, pelayan akan menyiarkan mesej kepada semua pengguna dalam talian apabila; pengguna memutuskan sambungan, pelayan akan mengalih keluar mereka daripada senarai pengguna dan menyiarkan mesej bahawa pengguna telah meninggalkan bilik sembang.

Berikut ialah contoh kod ringkas:

use WorkermanWorker;
use WorkermanProtocolsWebsocket;

// 创建一个WebSocket Worker监听端口
$websocket_worker = new Worker("websocket://0.0.0.0:1234");

// 设置协议处理类
$websocket_worker->onWebSocketConnect = function ($connection, $http_header) {
    // 处理握手请求
    Websocket::dealHandshake($connection, $http_header);

    // 将连接添加到用户列表中
    global $user_list;
    $user_list[$connection->id] = $connection;

    // 广播用户进入聊天室的消息
    broadcastMessage("User #$connection->id entered the chat room.
");
};

// 当接收到客户端消息时的回调函数
$websocket_worker->onMessage = function ($connection, $data) {
    // 处理接收到的消息
    broadcastMessage("User #$connection->id: $data");
};

// 当用户断开连接时的回调函数
$websocket_worker->onClose = function ($connection) {
    // 将连接从用户列表中移除
    global $user_list;
    unset($user_list[$connection->id]);

    // 广播用户离开聊天室的消息
    broadcastMessage("User #$connection->id left the chat room.");
};

// 启动Worker
Worker::runAll();

// 广播消息给所有在线用户
function broadcastMessage($message)
{
    global $user_list;
    foreach ($user_list as $connection) {
        $connection->send($message);
    }
}
Salin selepas log masuk

Melalui kod di atas, kami telah melaksanakan sistem pemesejan segera yang mudah. Setiap kali pengguna baharu memasuki bilik sembang, menghantar mesej atau meninggalkan bilik sembang, pelayan menyiarkan mesej yang sepadan kepada semua pengguna dalam talian.

Kesimpulan:
Dalam artikel ini, kami menggunakan rangka kerja Workerman untuk menunjukkan cara membina sistem pemesejan segera berprestasi tinggi melalui kod sampel mudah. Dengan mod operasi tidak menyekat asynchronous Workerman dan sokongan untuk konkurensi tinggi, kami boleh mengatasi tekanan sebilangan besar pengguna dengan mudah. Saya berharap melalui pengenalan artikel ini, pembaca dapat memahami dengan lebih mendalam tentang Workerman dan dapat mengaplikasikannya dalam projek sebenar.

Atas ialah kandungan terperinci Amalan pengaturcaraan rangkaian pekerja: cipta sistem pemesejan segera berprestasi tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perpustakaan sumber terbuka c++? Apakah perpustakaan sumber terbuka c++? Apr 22, 2024 pm 05:48 PM

C++ menyediakan set perpustakaan sumber terbuka yang kaya yang meliputi fungsi berikut: struktur dan algoritma data (Perpustakaan Templat Standard) berbilang benang, ungkapan biasa (Boost) antara muka pengguna grafik (Eigen) antara muka pengguna grafik (Qt) penglihatan komputer (OpenCV) pembelajaran mesin. (TensorFlow) Penyulitan (OpenSSL) Pemampatan data (zlib) Pengaturcaraan rangkaian (libcurl) Pengurusan pangkalan data (sqlite3)

Bagaimanakah fungsi C++ mengendalikan pertanyaan DNS dalam pengaturcaraan rangkaian? Bagaimanakah fungsi C++ mengendalikan pertanyaan DNS dalam pengaturcaraan rangkaian? Apr 27, 2024 pm 06:39 PM

Pustaka standard C++ menyediakan fungsi untuk mengendalikan pertanyaan DNS dalam pengaturcaraan rangkaian: gethostbyname(): Cari maklumat hos berdasarkan nama hos. gethostbyaddr(): Cari maklumat hos berdasarkan alamat IP. dns_lookup(): Asynchronously menyelesaikan DNS.

Mana satu lebih baik, swool atau pekerja? Mana satu lebih baik, swool atau pekerja? Apr 09, 2024 pm 07:00 PM

Swoole dan Workerman kedua-duanya adalah rangka kerja pelayan PHP berprestasi tinggi. Terkenal dengan pemprosesan tak segerak, prestasi cemerlang dan kebolehskalaannya, Swoole sesuai untuk projek yang perlu mengendalikan sejumlah besar permintaan serentak dan daya pemprosesan yang tinggi. Workerman menawarkan fleksibiliti mod tak segerak dan segerak, dengan API intuitif yang lebih sesuai untuk kemudahan penggunaan dan projek yang mengendalikan volum serentak yang lebih rendah.

Apakah protokol biasa untuk pengaturcaraan rangkaian Java? Apakah protokol biasa untuk pengaturcaraan rangkaian Java? Apr 15, 2024 am 11:33 AM

Protokol yang biasa digunakan dalam pengaturcaraan rangkaian Java termasuk: TCP/IP: digunakan untuk penghantaran data dan pengurusan sambungan yang boleh dipercayai. HTTP: digunakan untuk penghantaran data web. HTTPS: Versi HTTP selamat yang menggunakan penyulitan untuk menghantar data. UDP: Untuk pemindahan data yang cepat tetapi tidak stabil. JDBC: digunakan untuk berinteraksi dengan pangkalan data hubungan.

Panduan resolusi alamat fungsi biasa Golang Panduan resolusi alamat fungsi biasa Golang Apr 08, 2024 pm 02:18 PM

Fungsi utama untuk menghuraikan alamat dalam bahasa Go termasuk: net.ParseIP(): Menghuraikan alamat IPv4 atau IPv6. net.ParseCIDR(): Parse teg CIDR. net.ResolveIPAddr(): Selesaikan nama hos atau alamat IP ke dalam alamat IP. net.ResolveTCPAddr(): Selesaikan nama hos dan port ke alamat TCP. net.ResolveUDPAddr(): Selesaikan nama hos dan port ke alamat UDP.

Bagaimanakah fungsi C++ melaksanakan keselamatan rangkaian dalam pengaturcaraan rangkaian? Bagaimanakah fungsi C++ melaksanakan keselamatan rangkaian dalam pengaturcaraan rangkaian? Apr 28, 2024 am 09:06 AM

Fungsi C++ boleh mencapai keselamatan rangkaian dalam pengaturcaraan rangkaian Kaedah termasuk: 1. Menggunakan algoritma penyulitan (openssl) untuk menyulitkan komunikasi 2. Menggunakan tandatangan digital (cryptopp) untuk mengesahkan integriti data dan identiti pengirim ( htmlcxx) untuk menapis dan membersihkan input pengguna.

Bermula dengan asas Java kepada aplikasi praktikal: Bagaimana untuk bermula dengan cepat? Bermula dengan asas Java kepada aplikasi praktikal: Bagaimana untuk bermula dengan cepat? May 08, 2024 am 08:30 AM

Panduan kemasukan ke amalan Java: termasuk pengenalan sintaks asas (pembolehubah, operator, aliran kawalan, objek, kelas, kaedah, warisan, polimorfisme, enkapsulasi), perpustakaan kelas teras Java (pengendalian pengecualian, koleksi, generik, aliran input/output , pengaturcaraan rangkaian, tarikh dan masa API), kes praktikal (aplikasi kalkulator, termasuk contoh kod).

Bagaimanakah pengaturcaraan rangkaian Java menggunakan UDP untuk komunikasi tanpa sambungan? Bagaimanakah pengaturcaraan rangkaian Java menggunakan UDP untuk komunikasi tanpa sambungan? Apr 15, 2024 pm 12:51 PM

UDP (User Datagram Protocol) ialah protokol rangkaian tanpa sambungan ringan yang biasa digunakan dalam aplikasi sensitif masa. Ia membenarkan aplikasi menghantar dan menerima data tanpa membuat sambungan TCP. Contoh kod Java boleh digunakan untuk mencipta pelayan dan klien UDP, dengan pelayan mendengar datagram masuk dan bertindak balas, dan klien menghantar mesej dan menerima respons. Kod ini boleh digunakan untuk membina kes penggunaan dunia sebenar seperti aplikasi sembang atau sistem pengumpulan data.

See all articles