Contoh pembangunan PHP WebSocket: kes praktikal tentang cara melaksanakan fungsi tertentu

WBOY
Lepaskan: 2023-09-11 12:34:02
asal
1313 orang telah melayarinya

PHP WebSocket开发实例:如何实现特定功能的实用案例

Contoh pembangunan PHP WebSocket: kes praktikal tentang cara melaksanakan fungsi tertentu

Pengenalan:
Dengan pembangunan Internet, protokol HTTP tradisional mempunyai beberapa batasan dalam komunikasi masa nyata. WebSocket ialah protokol komunikasi dupleks penuh berdasarkan protokol TCP, yang boleh merealisasikan komunikasi masa nyata antara pelanggan dan pelayan. Artikel ini akan menggunakan kes praktikal untuk memperkenalkan cara menggunakan PHP WebSocket untuk melaksanakan fungsi tertentu.

  1. Pengenalan
    WebSocket ialah protokol yang mewujudkan sambungan panjang antara pelanggan dan pelayan, membolehkan komunikasi masa nyata dua hala. Berbeza daripada model respons permintaan HTTP tradisional, sambungan WebSocket mewujudkan saluran komunikasi yang berterusan antara klien dan pelayan, membolehkan pelayan menolak data secara aktif kepada klien.
  2. Kes praktikal: Bilik sembang dalam talian
    Bilik sembang dalam talian ialah salah satu aplikasi WebSocket yang paling biasa. Pengguna boleh mengakses halaman bilik sembang melalui pelayar untuk berkomunikasi dengan pengguna dalam talian lain dalam masa nyata. Di bawah ini kami menggunakan kes praktikal untuk memperkenalkan cara menggunakan PHP WebSocket untuk melaksanakan ruang sembang dalam talian yang mudah.

(1) Wujudkan pelayan WebSocket
Mula-mula, kita perlu membina pelayan WebSocket. Anda boleh menggunakan sambungan swoole PHP untuk membina pelayan WebSocket. Swoole ialah sambungan PHP berprestasi tinggi yang menyediakan sokongan untuk WebSocket. Kami boleh mencipta pelayan WebSocket dengan melaksanakan kod berikut:

<?php
$server = new swoole_websocket_server("0.0.0.0", 9501);

$server->on('open', function ($server, $request) {
    echo "new connection open: ".$request->fd;
});

$server->on('message', function ($server, $frame) {
    echo "received message: ".$frame->data;
});

$server->on('close', function ($ser, $fd) {
    echo "connection close: ".$fd;
});

$server->start();
?>
Salin selepas log masuk

Dalam kod ini, kami mencipta pelayan WebSocket dengan alamat IP pendengaran 0.0.0.0 dan nombor port 9501. Apabila sambungan baharu diwujudkan, pelayan secara automatik akan memanggil fungsi pengendalian acara open事件处理函数;当接收到客户端发送过来的消息时,服务器会调用message事件处理函数;而当连接关闭时,服务器会调用close.

(2) Pembangunan halaman hadapan
Seterusnya, kita perlu membangunkan halaman hadapan untuk memaparkan antara muka bilik sembang dan berkomunikasi dengan pelayan. Berikut ialah kod halaman hadapan yang ringkas:

<!DOCTYPE html>
<html>
<head>
    <title>WebSocket Chat Room</title>
    <script>
        var socket = new WebSocket("ws://localhost:9501");
        
        socket.onopen = function(event) {
            console.log("WebSocket connection open");
        };
        
        socket.onmessage = function(event) {
            console.log("Received message: " + event.data);
        };
        
        socket.onclose = function(event) {
            console.log("WebSocket connection closed");
        };
    </script>
</head>
<body>
    <h1>WebSocket Chat Room</h1>
    <div id="chat-messages"></div>
    <input type="text" id="input-message">
    <button onclick="sendMessage()">Send</button>
    
    <script>
        function sendMessage() {
            var message = document.getElementById("input-message").value;
            socket.send(message);
        }
    </script>
</body>
</html>
Salin selepas log masuk

Kod ini bersambung ke pelayan melalui WebSocket dan mentakrifkan fungsi pemprosesan untuk membuka sambungan, menerima mesej dan menutup sambungan. Melalui butang dan kotak teks, pengguna boleh memasukkan kandungan sembang dan menghantarnya ke pelayan.

(3) Pelaksanaan fungsi bilik sembang
Di bahagian pelayan, kita perlu menambah beberapa logik untuk melaksanakan fungsi bilik sembang. Ubah suai kod pelayan seperti berikut:

<?php
$server = new swoole_websocket_server("0.0.0.0", 9501);

$server->on('open', function ($server, $request) {
    echo "new connection open: ".$request->fd."
";
});

$server->on('message', function ($server, $frame) {
    echo "received message: ".$frame->data."
";
    
    // 广播消息给所有客户端
    foreach ($server->connections as $fd) {
        $server->push($fd, $frame->data);
    }
});

$server->on('close', function ($ser, $fd) {
    echo "connection close: ".$fd."
";
});

$server->start();
?>
Salin selepas log masuk

Dalam kod yang diubah suai, apabila menerima mesej daripada klien, pelayan akan menyiarkan mesej tersebut kepada semua pelanggan yang disambungkan. Dengan cara ini, semua mesej yang dihantar oleh pengguna pada halaman bilik sembang akan dipaparkan pada halaman pengguna lain dalam masa nyata.

Ringkasan:
Melalui kes praktikal di atas, kami belajar cara menggunakan PHP WebSocket untuk melaksanakan bilik sembang dalam talian yang mudah. Dengan bantuan sambungan swoole PHP, kami boleh membina pelayan dengan mudah berdasarkan WebSocket untuk mencapai fungsi komunikasi masa nyata. Selain itu, WebSocket boleh digunakan dalam lebih banyak senario, seperti paparan data masa nyata, pengeditan kolaboratif berbilang orang, dsb. Saya harap artikel ini akan membantu dalam memahami dan menggunakan PHP WebSocket.

Atas ialah kandungan terperinci Contoh pembangunan PHP WebSocket: kes praktikal tentang cara melaksanakan fungsi tertentu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!