Rumah  >  Artikel  >  rangka kerja php  >  Bagaimana untuk melaksanakan pelayan WebSocket menggunakan Swoole

Bagaimana untuk melaksanakan pelayan WebSocket menggunakan Swoole

王林
王林asal
2023-06-25 09:59:08929semak imbas

WebSocket telah menjadi elemen penting dalam aplikasi web moden. Ia menyediakan kaedah komunikasi dupleks penuh yang membolehkan komunikasi masa nyata antara pelayan dan pelanggan. Swoole ialah rangka kerja komunikasi rangkaian berprestasi tinggi berdasarkan PHP, yang boleh melaksanakan pelayan WebSocket dengan mudah.

Artikel ini akan memperkenalkan cara menggunakan Swoole untuk membina pelayan WebSocket.

Pasang Swoole

Untuk memasang Swoole, anda perlu menggunakan PECL (Perpustakaan Komuniti Sambungan PHP). Buka terminal dan masukkan arahan berikut:

pecl install swoole

Setelah pemasangan selesai, sambungan Swoole akan dimuatkan secara automatik ke dalam senarai sambungan PHP.

Mencipta Pelayan WebSocket

Cara paling mudah untuk mencipta pelayan WebSocket ialah dengan menggunakan kelas WebSocket Server Swoole:

$server = new SwooleWebsocketServer("127.0.0.1", 9501);

$server->on('open', function (SwooleWebsocketServer $server, $request) {
    echo "Client {$request->fd} connected
";
});

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

    // Broadcast message to all connected clients
    foreach ($server->connections as $fd) {
        $server->push($fd, $frame->data);
    }
});

$server->on('close', function (SwooleWebsocketServer $server, $fd) {
    echo "Client {$fd} disconnected
";
});

$server->start();

Contoh ini mencipta pelayan WebSocket tempatan dan menetapkannya untuk mendengar pada port 9501. Ia juga menambah tiga fungsi panggil balik:

  • terbuka - akan dipanggil apabila klien WebSocket baharu menyambung ke pelayan.
  • open - 当新的WebSocket客户端连接到服务器时,将被调用。
  • message - 当服务器接收到来自客户端的消息时,将被调用。
  • close - 当客户端断开连接时,将被调用。

open函数中,我们向控制台输出一个简单的消息,提示我们已经连接了一个新的客户端。

message函数中,我们向控制台输出接收到的消息,并向所有已连接的客户端广播此消息。

close函数中,我们向控制台输出一个消息,提示已断开连接的客户端的fd。

最后,我们通过调用start方法启动WebSocket服务器。

测试WebSocket服务器

为了测试WebSocket服务器,可以使用JavaScript的WebSocket API编写一个简单的客户端。这里提供一个非常简单的例子:

// Connect to WebSocket server
const ws = new WebSocket('ws://127.0.0.1:9501');

// Send a message to the server
ws.onopen = function() {
    ws.send('Hello, server!');
};

// Receive a message from the server
ws.onmessage = function(event) {
    console.log('Received message:', event.data);
};

在这个例子中,我们创建一个WebSocket对象,并连接到刚才创建的WebSocket服务器。我们还定义了两个回调函数:

  • onopen - 当WebSocket连接成功建立时,将被调用。在这里我们向服务器发送了一个消息。
  • onmessage - 当WebSocket接收到来自服务器的消息时,将被调用。

要测试这个客户端,只需在浏览器中打开控制台并将代码复制粘贴到控制台中即可。

实现更多功能

除了在该例子中演示的功能之外,Swoole还提供了许多其他有用的功能。例如,您可以通过调用pushmesej - Akan dipanggil apabila pelayan menerima mesej daripada klien.

tutup - Akan dipanggil apabila pelanggan memutuskan sambungan.

Dalam fungsi open, kami mengeluarkan mesej ringkas kepada konsol, menunjukkan bahawa kami telah menyambungkan pelanggan baharu.

🎜Dalam fungsi message, kami mengeluarkan mesej yang diterima ke konsol dan menyiarkan mesej ini kepada semua pelanggan yang disambungkan. 🎜🎜Dalam fungsi close, kami mengeluarkan mesej kepada konsol yang menunjukkan fd pelanggan yang terputus sambungan. 🎜🎜Akhir sekali, kami memulakan pelayan WebSocket dengan memanggil kaedah start. 🎜🎜Menguji Pelayan WebSocket🎜🎜Untuk menguji pelayan WebSocket, anda boleh menulis klien mudah menggunakan API WebSocket JavaScript. Berikut ialah contoh yang sangat mudah: 🎜rrreee🎜 Dalam contoh ini, kami mencipta objek WebSocket dan menyambung ke pelayan WebSocket yang baru kami buat. Kami juga mentakrifkan dua fungsi panggil balik: 🎜🎜🎜onopen - akan dipanggil apabila sambungan WebSocket berjaya diwujudkan. Di sini kami menghantar mesej kepada pelayan. 🎜onmessage - Akan dipanggil apabila WebSocket menerima mesej daripada pelayan. 🎜Untuk menguji klien ini, cuma buka konsol dalam penyemak imbas anda dan salin dan tampal kod ke dalam konsol. 🎜🎜Mencapai lebih banyak fungsi🎜🎜Selain fungsi yang ditunjukkan dalam contoh ini, Swoole juga menyediakan banyak fungsi berguna yang lain. Sebagai contoh, anda boleh menolak mesej kepada klien dengan memanggil kaedah push. Selain itu, anda boleh menggunakan coroutine untuk melaksanakan pengaturcaraan tak segerak. 🎜🎜Ringkasnya, Swoole sangat sesuai untuk membina pelayan WebSocket. Ia menyediakan banyak ciri berguna yang menjadikan pembangunan aplikasi web masa nyata sangat mudah. 🎜

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