Rumah  >  Artikel  >  rangka kerja php  >  Aplikasi praktikal Workerman: mewujudkan bilik sembang dalam talian berprestasi tinggi

Aplikasi praktikal Workerman: mewujudkan bilik sembang dalam talian berprestasi tinggi

WBOY
WBOYasal
2023-08-06 12:29:061423semak imbas

Aplikasi praktikal pekerja: Cipta bilik sembang dalam talian berprestasi tinggi

Pengenalan:
Dalam era Internet hari ini, sembang dalam talian masa nyata telah menjadi bahagian yang amat diperlukan dalam kehidupan orang ramai. Untuk memenuhi keperluan pengguna untuk interaksi masa nyata berprestasi tinggi, menjadi penting untuk memilih rangka kerja komunikasi yang sesuai. Sebagai rangka kerja komunikasi rangkaian tak segerak PHP berprestasi tinggi, Workerman boleh memenuhi permintaan ini. Artikel ini akan memperkenalkan cara menggunakan Workerman untuk membina bilik sembang dalam talian berprestasi tinggi dan memberikan contoh kod.

1. Persediaan persekitaran
Sebelum anda mula, pastikan persekitaran anda memenuhi syarat berikut:

  1. Versi PHP hendaklah tidak kurang daripada 5.3, dan sambungan pcntl dan posix perlu dipasang.
  2. Pasang Komposer, yang digunakan untuk memasang Workerman dan fail perpustakaan bergantungnya.

2. Cipta pelayan bilik sembang
Pertama, kita perlu buat pelayan bilik sembang. Buat fail bernama "chat_server.php" dan tambah kod berikut:

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

use WorkermanWorker;

$ws_worker = new Worker("websocket://0.0.0.0:8000");

$ws_worker->count = 4; // 设置启动4个进程

$ws_worker->onConnect = function ($connection) {
    echo "有新用户连接
";
};

$ws_worker->onMessage = function ($connection, $data) use ($ws_worker) {
    foreach ($ws_worker->connections as $clientConnection) {
        $clientConnection->send($data); // 将收到的消息发送给所有连接的客户端
    }
};

$ws_worker->onClose = function ($connection) {
    echo "有用户断开连接
";
};

Worker::runAll();

Dengan kod di atas, kami mencipta pelayan WebSocket dan mendengar port 8000. Apabila pengguna baharu menyambung, "Pengguna baharu menyambung" dikeluarkan ke latar belakang Apabila pengguna memutuskan sambungan, "Pengguna memutuskan sambungan" dikeluarkan ke latar belakang. Dalam fungsi panggil balik onMessage, kami menghantar mesej yang diterima kepada semua pelanggan yang disambungkan.

3 Buat pelanggan bilik sembang
Seterusnya, kita perlu mencipta pelanggan bilik sembang yang mudah. Cipta fail bernama "chat_client.html" dan tambahkan kod berikut:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>在线聊天室</title>
    <style>
        #message {
            height: 500px;
            border: 1px solid #ccc;
            padding: 10px;
            overflow-y: scroll;
        }

        #message p {
            margin: 5px 0;
        }

        #input {
            margin-top: 10px;
        }
    </style>
</head>
<body>
<div id="message"></div>
<input type="text" id="input" placeholder="请输入消息">
<button onclick="send()">发送</button>

<script>
    var ws = new WebSocket("ws://localhost:8000");

    ws.onopen = function () {
        console.log("连接成功");
    };

    ws.onmessage = function (evt) {
        var message = document.getElementById("message");
        message.innerHTML += "<p>" + evt.data + "</p>";
        message.scrollTop = message.scrollHeight; // 滚动到底部
    };

    ws.onclose = function () {
        console.log("连接关闭");
    };

    function send() {
        var input = document.getElementById("input");
        var message = input.value;
        ws.send(message);
        input.value = "";
    }
</script>
</body>
</html>

Dengan kod di atas, kami telah mencipta antara muka pelanggan bilik sembang yang mudah. Apabila pengguna memasukkan mesej dan mengklik butang hantar, mesej itu dihantar ke pelayan. Apabila pelayan menerima mesej, mesej dipaparkan dalam kawasan mesej dalam fungsi panggil balik onmessage dan secara automatik menatal ke bawah.

4. Uji bilik sembang
Lakukan arahan berikut dalam baris arahan untuk memulakan pelayan:

php chat_server.php start

Kemudian, buka dua atau lebih tetingkap pelayar dan akses fail "chat_client.html" masing-masing. Masukkan mesej dalam kotak input tetingkap penyemak imbas yang berbeza, klik butang hantar, dan anda akan melihat mesej yang sama dalam semua tetingkap. Dengan cara ini kami berjaya mencipta bilik sembang dalam talian berprestasi tinggi.

Ringkasan:
Artikel ini memperkenalkan cara menggunakan Workerman untuk membina bilik sembang dalam talian berprestasi tinggi dan menyediakan contoh kod yang sepadan. Dengan menggunakan Workerman, kami boleh melaksanakan fungsi sembang masa nyata berkonkurensi tinggi dan kependaman rendah dengan mudah. Saya harap artikel ini akan membantu aplikasi praktikal Workerman.

Atas ialah kandungan terperinci Aplikasi praktikal Workerman: mewujudkan bilik sembang dalam talian berprestasi tinggi. 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