Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Panduan pembangunan PHP Websocket untuk melaksanakan fungsi pengagihan tugas masa nyata

Panduan pembangunan PHP Websocket untuk melaksanakan fungsi pengagihan tugas masa nyata

WBOY
WBOYasal
2023-12-02 10:17:331157semak imbas

PHP Websocket开发指南,实现实时任务分发功能

Panduan Pembangunan Soket Web PHP, untuk melaksanakan fungsi pengagihan tugas masa nyata, contoh kod khusus diperlukan

Pengenalan:
Dalam aplikasi web moden, fungsi pengagihan tugas masa nyata menjadi semakin penting. Melalui pengagihan tugas masa nyata, komunikasi masa nyata dan kemas kini masa nyata boleh dicapai, memberikan pengguna pengalaman interaktif yang lebih baik. PHP Websocket ialah teknologi yang digunakan untuk mencapai komunikasi masa nyata Artikel ini akan memperkenalkan prinsip asas dan penggunaan PHP Websocket, dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan melaksanakan fungsi pengagihan tugas masa nyata.

Bahagian 1: Apakah itu Websocket
Websocket ialah protokol komunikasi dupleks penuh Ia diwujudkan pada sambungan TCP dan mencapai komunikasi dua hala masa nyata antara pelayan dan pelanggan melalui proses jabat tangan. Berbanding dengan protokol HTTP tradisional, Websocket mempunyai kependaman rangkaian yang lebih rendah dan prestasi masa nyata yang lebih tinggi.

Bahagian 2: Prinsip PHP Websocket
Prinsip kerja PHP Websocket boleh diterangkan secara ringkas sebagai langkah berikut:

  1. Permulaan pelayan: Mulakan pelayan Websocket melalui mod baris arahan PHP.
  2. Proses jabat tangan: Apabila pelanggan menghantar permintaan HTTP kepada pelayan, pelayan akan mengesahkan permintaan dan mewujudkan sambungan jabat tangan.
  3. Penubuhan sambungan: Selepas menyambung melalui jabat tangan, sambungan berterusan diwujudkan antara pelayan dan pelanggan, membolehkan komunikasi dua hala.
  4. Penghantaran data: Data boleh dihantar antara pelayan dan pelanggan melalui protokol Websocket dan bertindak balas dengan segera.

Bahagian 3: Cara menggunakan PHP Websocket
PHP Websocket boleh dilaksanakan melalui perpustakaan PHP seperti Ratchet atau Swoole Berikut menggunakan Ratchet sebagai contoh.

Langkah 1: Pasang perpustakaan Ratchet
Mula-mula, anda perlu memasang perpustakaan Ratchet menggunakan arahan Komposer. Jalankan arahan berikut dalam baris arahan:

composer require cboden/ratchet

Langkah 2: Cipta Pelayan Websocket
Buat fail server.php dalam folder projek dan tulis kod berikut dalam fail: server.php文件,并在文件中编写以下代码:

use RatchetMessageComponentInterface;
use RatchetConnectionInterface;

require 'vendor/autoload.php';

class MyWebSocket implements MessageComponentInterface {
    protected $clients;
   
    public function __construct() {
        $this->clients = new SplObjectStorage;
    }

    public function onOpen(ConnectionInterface $conn) {
        $this->clients->attach($conn);
        echo "New client connected: {$conn->resourceId}
";
    }

    public function onMessage(ConnectionInterface $from, $msg) {
        // Task distribution logic
        foreach ($this->clients as $client) {
            $client->send($msg);
        }
    }

    public function onClose(ConnectionInterface $conn) {
        $this->clients->detach($conn);
        echo "Client disconnected: {$conn->resourceId}
";
    }

    public function onError(ConnectionInterface $conn, Exception $e) {
        echo "An error occured: {$e->getMessage()}
";
        $conn->close();
    }
}

$app = new RatchetApp('localhost', 8080);
$app->route('/', new MyWebSocket, ['*']);
$app->run();

步骤3:运行Websocket服务器
在命令行中执行以下命令,启动Websocket服务器:

php server.php

步骤4:创建Websocket客户端
在项目文件夹中创建一个client.html文件,并在文件中编写以下代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Websocket Client</title>
</head>
<body>
    <script type="text/javascript">
        const socket = new WebSocket('ws://localhost:8080');
        socket.onopen = function() {
            console.log('Connected to server');
        };
        socket.onmessage = function(e) {
            console.log('Received message:', e.data);
        };
        socket.onclose = function() {
            console.log('Connection closed');
        };
    </script>
</body>
</html>

步骤5:测试Websocket通信
在浏览器中打开client.html,并打开开发者工具,在控制台中可以看到连接成功的日志。此时,服务器和客户端之间建立了一个Websocket连接,可以进行实时通信。

第四节:实现实时任务分发功能
通过PHP Websocket,我们可以轻松实现实时任务分发功能。在步骤2的代码中,可以看到onMessage方法定义了任务分发的逻辑。当服务器接收到客户端发送的任务数据后,通过遍历所有连接的客户端,并使用send

public function onMessage(ConnectionInterface $from, $msg) {
    // Task distribution logic
    foreach ($this->clients as $client) {
        $client->send($msg);
    }
}

Langkah 3 :Jalankan pelayan Websocket

Laksanakan arahan berikut dalam baris arahan untuk memulakan pelayan Websocket:

rrreee

Langkah 4: Buat klien Websocket
Buat fail client.html dalam folder projek dan tambah Tulis kod berikut dalam:

rrreee

Langkah 5: Uji komunikasi Websocket

Buka client.html dalam penyemak imbas dan buka alat pembangun Anda boleh melihat log sambungan yang berjaya dalam konsol. Pada ketika ini, sambungan Websocket diwujudkan antara pelayan dan pelanggan, membolehkan komunikasi masa nyata.
  1. Bahagian 4: Melaksanakan fungsi pengagihan tugas masa nyata
  2. Melalui PHP Websocket, kami boleh melaksanakan fungsi pengagihan tugas masa nyata dengan mudah. Dalam kod langkah 2, anda boleh melihat bahawa kaedah onMessage mentakrifkan logik pengagihan tugas. Apabila pelayan menerima data tugasan yang dihantar oleh klien, ia merentasi semua klien yang disambungkan dan menghantar data tugasan kepada setiap klien menggunakan kaedah hantar.
  3. Kod sampel adalah seperti berikut:
rrreee🎜Kesimpulan: 🎜Melalui langkah di atas, kami mempelajari prinsip asas dan penggunaan PHP Websocket, dan memperkenalkan cara melaksanakan fungsi pengagihan tugas masa nyata. Dengan menggunakan PHP Websocket, kami boleh mencapai komunikasi masa nyata dan kemas kini masa nyata dengan mudah, meningkatkan pengalaman interaksi pengguna. Saya harap artikel ini akan membantu anda memahami dan menggunakan PHP Websocket. 🎜🎜Rujukan: 🎜🎜🎜Tapak web rasmi Ratchet: https://github.com/ratchetphp/Ratchet 🎜🎜Tapak web rasmi Swoole: https://www.swoole.com/🎜🎜

Atas ialah kandungan terperinci Panduan pembangunan PHP Websocket untuk melaksanakan fungsi pengagihan tugas masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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