Rumah  >  Artikel  >  rangka kerja php  >  Model Pembangunan Pekerja: Amalan Terbaik untuk Melaksanakan Fungsi Tolakan Data Masa Nyata

Model Pembangunan Pekerja: Amalan Terbaik untuk Melaksanakan Fungsi Tolakan Data Masa Nyata

PHPz
PHPzasal
2023-08-05 08:13:131116semak imbas

Model Pembangunan Pekerja: Amalan Terbaik untuk Melaksanakan Fungsi Tolakan Data Masa Nyata

Pengenalan:
Dengan perkembangan pesat Internet, tolakan data masa nyata telah menjadi fungsi yang diperlukan untuk banyak aplikasi. Dalam bidang PHP, Workerman sudah pasti salah satu rangka kerja tolak data masa nyata yang paling berkuasa. Artikel ini akan menerangkan cara menggunakan Workerman untuk membangunkan keupayaan tolak data masa nyata dan menyediakan beberapa contoh kod amalan terbaik.

1. Apakah itu Pekerja?
Workerman ialah rangka kerja komunikasi rangkaian tak segerak PHP berprestasi tinggi dalam medan PHP Ia dibangunkan berdasarkan PHP tulen tanpa sebarang kebergantungan dan boleh berjalan secara bebas. Workerman menggunakan model IO yang tidak menyekat dan boleh mengendalikan sejumlah besar sambungan serentak. Pada masa yang sama, ia juga menyediakan antara muka yang mudah dan mudah digunakan, membolehkan pembangun membangunkan aplikasi masa nyata berprestasi tinggi dengan cepat.

2. Cipta aplikasi tolak data masa nyata yang ringkas
Pertama, kita perlu menggunakan komposer untuk memasang Workerman:

composer require workerman/workerman

Kemudian, kami mencipta fail server.php dan masukkan kod berikut:

<?php
require_once __DIR__ . '/vendor/autoload.php';

use WorkermanWorker;

// 创建一个Worker监听8080端口,使用websocket协议通讯
$ws_worker = new Worker('websocket://0.0.0.0:8080');

// 启动4个进程对外提供服务
$ws_worker->count = 4;

// 当客户端与服务端建立连接时触发
$ws_worker->onConnect = function ($connection) {
    echo "New connection
";
};

// 当客户端给服务端发送消息时触发
$ws_worker->onMessage = function ($connection, $data) use ($ws_worker) {
    // 将消息广播给所有客户端
    foreach ($ws_worker->connections as $client_connection) {
        $client_connection->send($data);
    }
};

// 当客户端与服务端断开连接时触发
$ws_worker->onClose = function ($connection) {
    echo "Connection closed
";
};

// 运行worker
Worker::runAll();

Kod ini hanya mencipta Pelayan websocket akan mencetuskan peristiwa yang sepadan apabila pelanggan baharu menyambung, menghantar mesej atau memutuskan sambungan. Logik pemprosesan peristiwa tertentu boleh diubah suai mengikut keperluan sebenar.

3. Contoh kod pelanggan
Untuk menguji fungsi tolak data masa nyata kami, kami boleh mencipta fail html mudah untuk mensimulasikan klien. Dalam fail html ini, kami menggunakan javascript untuk melaksanakan sambungan soket web dan menghantar serta menerima mesej.

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>实时数据推送</title>
    <script>
        var ws = new WebSocket('ws://127.0.0.1:8080');

        ws.onopen = function () {
            console.log('已连接服务器');
        };

        ws.onmessage = function (event) {
            console.log('收到消息:' + event.data);
        };

        function send() {
            var message = document.getElementById('message').value;
            ws.send(message);
            console.log('发送消息:' + message);
        }
    </script>
</head>
<body>
    <input type="text" id="message" placeholder="请输入要发送的消息">
    <button onclick="send()">发送</button>
</body>
</html>

Kod javascript ini akan membuat sambungan soket web dan mentakrifkan acara yang berkaitan dengan mewujudkan sambungan dengan pelayan, menerima mesej dan menghantar mesej. Dengan memasukkan mesej yang akan dihantar dalam kotak input dan mengklik butang "Hantar", mesej boleh dihantar ke pelayan dan mesej yang diterima akan dipaparkan pada konsol.

4 Amalan Terbaik
Dalam pembangunan sebenar, terdapat banyak faktor yang perlu dipertimbangkan, seperti kawalan kebenaran, pengurusan kumpulan, pengesahan mesej, dll. Berikut ialah beberapa contoh kod untuk amalan terbaik:

  1. Pengesahan log masuk pengguna:
// 在onConnect事件中验证用户登录
$ws_worker->onConnect = function ($connection) {
    // 获取用户token
    $token = $connection->getRequestHeader('token');
    // 验证token
    if (!verifyToken($token)) {
        $connection->close();
    }
};
  1. Pengurusan kumpulan:
// 创建分组、加入分组和发送给指定分组的示例代码
$group = new WorkermanConnectionConnections();
$group->add($client_connection);
$ws_worker->group['group_name'] = $group;
...

// 发送消息给指定分组
$ws_worker->group['group_name']->send($data);
  1. Menghantar mesej kepada pelanggan yang ditentukan:
rreee untuk menggunakan artikel ini: Rangka Kerja Pekerja untuk membangunkan keupayaan tolak data masa nyata dan menyediakan beberapa contoh kod amalan terbaik. Dengan mengkaji contoh ini, saya percaya pembaca boleh mula menggunakan Workerman dengan cepat dan menggunakannya untuk membangunkan aplikasi masa nyata berprestasi tinggi. Jika anda ingin terus mempelajari tentang Workerman secara mendalam, anda boleh merujuk kepada dokumentasi rasmi terperincinya. Saya berharap anda semua yang terbaik untuk menggunakan Workerman untuk membangunkan fungsi tolak data masa nyata!

Atas ialah kandungan terperinci Model Pembangunan Pekerja: Amalan Terbaik untuk Melaksanakan Fungsi Tolakan Data 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