Rumah  >  Artikel  >  rangka kerja php  >  Cara menggunakan Swoole untuk melaksanakan komunikasi WebSocket

Cara menggunakan Swoole untuk melaksanakan komunikasi WebSocket

王林
王林asal
2023-11-07 12:56:15839semak imbas

Cara menggunakan Swoole untuk melaksanakan komunikasi WebSocket

Swoole ialah rangka kerja rangkaian coroutine PHP berprestasi tinggi yang menyokong IO tak segerak, berbilang proses, berbilang benang, coroutine dan ciri lain. Antaranya, komponen WebSocket yang disediakan oleh Swoole boleh digunakan untuk mencapai komunikasi dua hala masa nyata dan merupakan pilihan ideal untuk membina aplikasi masa nyata. Artikel ini akan memperkenalkan cara menggunakan Swoole untuk melaksanakan komunikasi WebSocket dan memberikan contoh kod khusus.

1. Persediaan persekitaran

Sebelum menggunakan Swoole untuk melaksanakan komunikasi WebSocket, anda perlu memastikan sambungan Swoole telah dipasang. Ia boleh dipasang melalui arahan berikut:

pecl install swoole

atau muat turun binaan kod sumber daripada repositori GitHub rasmi.

2. Cipta pelayan WebSocket

Perkenalkan komponen WebSocket Swoole ke dalam kod, buat pelayan WebSocket dan pantau sambungan dengan pelanggan. Kodnya adalah seperti berikut:

use SwooleWebSocketServer;

// 创建WebSocket服务器
$server = new Server('0.0.0.0', 9501);

// 监听WebSocket连接事件
$server->on('open', function (Server $server, $request) {
    echo "Client {$request->fd} connected
";
});

// 启动服务器
$server->start();

Kod di atas mencipta pelayan WebSocket yang mendengar pada port 9501, dan mencetak deskriptor fail (fd) klien yang disambungkan apabila sambungan diwujudkan.

3. Memproses mesej WebSocket

Apabila pelayan WebSocket mewujudkan sambungan dengan klien, pelanggan boleh menghantar mesej kepada pelayan. Pelayan perlu mendengar peristiwa mesej dengan pelanggan dan memprosesnya. Proses memproses mesej WebSocket adalah serupa dengan permintaan HTTP Kandungan mesej boleh diperolehi dengan menghuraikan pengepala mesej dan mendapatkan badan mesej. Kod adalah seperti berikut:

// 监听WebSocket消息事件
$server->on('message', function (Server $server, $frame) {
    echo "Received message: {$frame->data}
";
});

Kod di atas mendengar acara mesej WebSocket dan mencetak kandungan mesej apabila mesej diterima.

4. Hantar mesej kepada klien WebSocket

Untuk menghantar mesej kepada klien dalam pelayan WebSocket, anda perlu menggunakan kaedah push pelayan. Kaedah ini menerima deskriptor fail klien dan kandungan mesej yang perlu dihantar. Kodnya adalah seperti berikut:

// 监听WebSocket消息事件
$server->on('message', function (Server $server, $frame) {
    echo "Received message: {$frame->data}
";
    
    // 向客户端发送消息
    $server->push($frame->fd, 'Server received message: '.$frame->data);
});

Kod di atas membalas mesej kepada pelanggan semasa memproses mesej WebSocket.

5. Contoh kod lengkap

use SwooleWebSocketServer;

// 创建WebSocket服务器
$server = new Server('0.0.0.0', 9501);

// 监听WebSocket连接事件
$server->on('open', function (Server $server, $request) {
    echo "Client {$request->fd} connected
";
});

// 监听WebSocket消息事件
$server->on('message', function (Server $server, $frame) {
    echo "Received message: {$frame->data}
";
    
    // 向客户端发送消息
    $server->push($frame->fd, 'Server received message: '.$frame->data);
});

// 启动服务器
$server->start();

6. Pelanggan WebSocket

Selepas menyiapkan pembinaan pelayan WebSocket, kita perlu menggunakan klien WebSocket untuk menghantar mesej kepada pelayan dan menerima respons daripada pelayan. Berikut ialah contoh kod untuk klien WebSocket:

// 创建WebSocket连接
const ws = new WebSocket('ws://localhost:9501');

// 监听WebSocket连接事件
ws.addEventListener('open', function (event) {
    console.log('Connected to WebSocket server');
    
    // 发送消息
    ws.send('Hello, Swoole WebSocket');
});

// 监听WebSocket消息事件
ws.addEventListener('message', function (event) {
    console.log('Received message:', event.data);
});

Kod di atas menggunakan JavaScript untuk mencipta sambungan WebSocket dan menghantar mesej kepada pelayan WebSocket selepas sambungan diwujudkan. Apabila mesej diproses oleh pelayan, pelayan akan menghantar mesej balasan kembali kepada klien, dan klien boleh menerima mesej balasan dengan mendengar acara mesej.

7. Ringkasan

Artikel ini memperkenalkan cara menggunakan Swoole untuk melaksanakan komunikasi WebSocket, dan menunjukkan kaedah mencipta pelayan WebSocket, memproses mesej dan menghantar mesej kepada pelanggan melalui contoh kod. Menggunakan komponen WebSocket Swoole anda boleh membina aplikasi komunikasi dua hala masa nyata dengan mudah.

Atas ialah kandungan terperinci Cara menggunakan Swoole untuk melaksanakan komunikasi WebSocket. 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