Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan PHP dan WebSocket untuk membina sistem pemesejan segera

Cara menggunakan PHP dan WebSocket untuk membina sistem pemesejan segera

WBOY
WBOYasal
2023-12-17 17:13:101294semak imbas

Cara menggunakan PHP dan WebSocket untuk membina sistem pemesejan segera

Cara menggunakan PHP dan WebSocket untuk membina sistem pemesejan segera

Pengenalan:
Dengan perkembangan Internet, kepentingan sistem pemesejan segera telah menjadi semakin menonjol dalam pelbagai senario aplikasi. Pada masa lalu, mencapai komunikasi masa nyata selalunya bergantung pada tinjauan pendapat atau tinjauan panjang, yang mempunyai had tertentu dalam prestasi dan pengalaman pengguna. Nasib baik, kemunculan protokol WebSocket menyediakan penyelesaian yang lebih baik untuk pembangunan sistem pemesejan segera. Sebagai bahasa back-end yang digunakan secara meluas, PHP, digabungkan dengan WebSocket, boleh membina sistem pemesejan segera yang cekap dan masa nyata dengan mudah. Artikel ini akan memberi tumpuan kepada cara menggunakan PHP dan WebSocket untuk membina sistem pemesejan segera yang mudah dan menyediakan contoh kod khusus.

  1. Pengenalan kepada WebSocket Protocol
    WebSocket ialah protokol rangkaian untuk komunikasi dupleks penuh melalui satu sambungan TCP. Berbanding dengan protokol HTTP tradisional, WebSocket mempunyai kelebihan berikut:
  2. Masa Nyata: Selepas mewujudkan sambungan WebSocket, pelayan dan pelanggan boleh memindahkan data dalam kedua-dua arah antara keduanya dalam masa nyata.
  3. Kurangkan beban rangkaian: Berbanding dengan tinjauan pendapat atau tinjauan panjang, WebSocket menggunakan pendekatan dipacu peristiwa dan hanya berkomunikasi apabila data baharu tiba, mengurangkan beban rangkaian yang tidak diperlukan.
  4. PHP melaksanakan pelayan WebSocket
    Untuk menggunakan PHP untuk melaksanakan pelayan WebSocket, kami boleh menggunakan beberapa perpustakaan pihak ketiga untuk memudahkan proses pembangunan. Berikut ialah dua perpustakaan yang biasa digunakan:
  5. Ratchet: Pustaka WebSocket PHP yang menyediakan pelaksanaan pelayan WebSocket yang lengkap dan memudahkan proses pembangunan menggunakan WebSocket.
  6. Swoole: Enjin komunikasi rangkaian berprestasi tinggi berdasarkan bahasa C, yang menyediakan sokongan untuk protokol seperti WebSocket dan boleh melaksanakan pelayan WebSocket berprestasi tinggi dalam PHP.

Dalam artikel ini, kami akan menggunakan perpustakaan Ratchet sebagai contoh untuk menerangkan.

Pertama, kita perlu memasang perpustakaan Ratchet melalui Komposer:

composer require cboden/ratchet

Seterusnya, kami mencipta fail bernama server.php untuk melaksanakan logik pelayan WebSocket. Kodnya adalah seperti berikut:

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

use RatchetConnectionInterface;
use RatchetMessageComponentInterface;
use RatchetWebSocketWsServer;
use RatchetHttpHttpServer;
use RatchetServerIoServer;

// 创建一个实现MessageComponentInterface接口的类,处理WebSocket连接和消息
class Chat implements MessageComponentInterface {
    protected $clients;

    public function __construct() {
        $this->clients = new SplObjectStorage;
    }

    // 新客户端连接时触发
    public function onOpen(ConnectionInterface $conn) {
        $this->clients->attach($conn);
        echo "A new connection has been opened
";
    }

    // 客户端关闭连接时触发
    public function onClose(ConnectionInterface $conn) {
        $this->clients->detach($conn);
        echo "A connection has been closed
";
    }

    // 收到客户端消息时触发
    public function onMessage(ConnectionInterface $from, $msg) {
        foreach ($this->clients as $client) {
            $client->send($msg);
        }
    }

    // 发生错误时触发
    public function onError(ConnectionInterface $conn, Exception $e) {
        echo "An error has occurred: {$e->getMessage()}
";
        $conn->close();
    }
}

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
    8080
);

$server->run();

Dengan kod di atas, kami telah melaksanakan pelayan WebSocket mudah yang akan menyiarkan mesej yang dihantar oleh pelanggan kepada semua pelanggan yang bersambung.

  1. Pelaksanaan pelanggan
    Apabila pelayan WebSocket sedia, kita perlu mencipta klien untuk menyambung ke pelayan WebSocket dan berkomunikasi. Berikut ialah halaman HTML ringkas sebagai contoh klien:
<!DOCTYPE html>
<html>
<head>
    <title>WebSocket Chat</title>
</head>
<body>
    <input type="text" id="message" placeholder="Type a message...">
    <button id="send">Send</button>
    <ul id="messages"></ul>

    <script>
        var socket = new WebSocket('ws://localhost:8080');

        var form = document.querySelector('form');
        var input = document.querySelector('#message');
        var ul = document.querySelector('ul');

        // 连接成功时触发
        socket.onopen = function() {
            console.log('Connected to WebSocket server');
        };

        // 收到服务器发送的消息时触发
        socket.onmessage = function(e) {
            var li = document.createElement('li');
            li.textContent = e.data;
            ul.appendChild(li);
        };

        // 连接关闭时触发
        socket.onclose = function() {
            console.log('Disconnected from WebSocket server');
        };

        // 发送消息
        document.querySelector('#send').onclick = function() {
            var message = input.value;
            socket.send(message);
            input.value = '';
        };
    </script>
</body>
</html>

Buka halaman dalam penyemak imbas, apabila kotak input dimasukkan dan mesej dihantar, pelayan akan menyiarkan mesej itu kepada semua pelanggan yang bersambung.

Kesimpulan:
Melalui pengenalan artikel ini, kami belajar cara menggunakan PHP dan WebSocket untuk membina sistem pemesejan segera yang mudah. Melalui protokol WebSocket, kami boleh mencapai komunikasi masa nyata, cekap dan meningkatkan pengalaman pengguna. Sudah tentu, ini hanyalah contoh mudah, dan sistem pemesejan segera sebenar memerlukan pembangunan yang lebih kompleks berdasarkan keperluan khusus. Saya harap anda mendapati artikel ini membantu dan berasa bebas untuk bertanya lebih banyak soalan dan idea.

Atas ialah kandungan terperinci Cara menggunakan PHP dan WebSocket untuk membina sistem pemesejan segera. 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