Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan WebSocket untuk komunikasi masa nyata dalam pembangunan PHP

Cara menggunakan WebSocket untuk komunikasi masa nyata dalam pembangunan PHP

WBOY
WBOYasal
2023-06-25 19:18:16791semak imbas

Dengan perkembangan Internet yang semakin meningkat, komunikasi masa nyata telah menjadi bahagian yang tidak dapat dipisahkan daripada kita. Sebagai salah satu protokol peningkatan HTTP, WebSocket lebih cekap dan stabil berdasarkan protokol TCP. Dalam pembangunan PHP, bagaimana untuk menggunakan WebSocket untuk mencapai komunikasi masa nyata? Artikel ini akan memperkenalkannya dari aspek berikut.

Pengenalan kepada WebSocket

WebSocket ialah protokol rangkaian yang berkomunikasi berdasarkan protokol TCP dan biasanya digunakan untuk komunikasi masa nyata. Berbeza daripada protokol HTTP, WebSocket boleh mengekalkan sambungan yang panjang antara pelayan dan pelanggan, mencapai komunikasi dupleks penuh, dan mempunyai kecekapan penghantaran data yang lebih tinggi. Dalam protokol HTTP tradisional, pelanggan memperoleh data daripada pelayan melalui permintaan, dan pelayan bertindak balas kepada permintaan dan kemudian mengembalikan data kepada pelanggan Walaupun tiada penghantaran data, sambungan TCP perlu dikekalkan. Dalam WebSocket, sambungan hanya perlu diwujudkan sekali semasa jabat tangan, dan penghantaran data seterusnya boleh berdasarkan sambungan ini tanpa perlu membuat sambungan setiap kali.

Gunakan sambungan Swoole

Swoole ialah rangka kerja komunikasi rangkaian berprestasi tinggi yang dibangunkan untuk PHP Ia menyokong operasi coroutine dan IO tak segerak, dan juga menyokong protokol WebSocket. Dalam proses menggunakan sambungan Swoole untuk melaksanakan komunikasi masa nyata WebSocket, anda perlu menggunakan kelas pelayan WebSocket yang disediakan oleh perpustakaan Swoole.

Pasang Swoole

# CentOS 6 系统下安装
sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
sudo rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
sudo yum install php56w php56w-opcache php56w-devel php56w-pear gcc automake autoconf make
sudo pecl install swoole

Buat pelayan WebSocket

<?php
// 创建 WebSocket 服务器对象,监听 127.0.0.1:9502 端口
$server = new SwooleWebSocketServer("127.0.0.1", 9502);

// 监听 WebSocket 连接打开事件
$server->on('open', function (SwooleWebSocketServer $server, $request) {
    echo "client {$request->fd} opened
";
});

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

// 监听 WebSocket 连接关闭事件
$server->on('close', function ($ser, $fd) {
    echo "client {$fd} closed
";
});

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

Dalam kod di atas, kami mula-mula mencipta objek pelayan WebSocket untuk mendengar. Kemudian gunakan kaedah $server->on() untuk mendengar pembukaan sambungan WebSocket, mesej, penutupan sambungan dan acara lain masing-masing. Selepas menerima mesej yang dihantar oleh klien, pelayan akan mencetak kandungan mesej ke konsol dan menghantar semula mesej kepada klien melalui kaedah $server->push(). $server->on() 方法分别监听 WebSocket 的连接打开、消息以及连接关闭等事件。在收到客户端的发送的消息后,服务器会将消息内容打印到控制台中,并通过 $server->push() 方法将消息发送回客户端。

前端页面实现

创建 WebSocket 服务器后,我们需要在前端页面上编写 JavaScript 代码,创建 WebSocket 对象,并进行事件监听和消息发送等操作。具体代码如下:

// 创建 WebSocket 对象
var ws = new WebSocket("ws://127.0.0.1:9502");

// 监听 WebSocket 连接打开事件
ws.onopen = function() {
    console.log("WebSocket connection established");
};

// 监听 WebSocket 消息事件
ws.onmessage = function(event) {
    console.log("received message: " + event.data);
};

// 监听 WebSocket 连接关闭事件
ws.onclose = function() {
    console.log("WebSocket connection closed");
};

// 发送消息
ws.send("hello world");

在上述代码中,我们使用 new WebSocket("ws://127.0.0.1:9502") 创建 WebSocket 对象,并分别通过 ws.onopen()ws.onmessage()ws.onclose() 方法进行事件监听。在页面中发送消息时,可以通过 ws.send()

Pelaksanaan halaman hadapan

Selepas mencipta pelayan WebSocket, kita perlu menulis kod JavaScript pada halaman hujung hadapan, mencipta objek WebSocket dan melakukan pemantauan acara dan penghantaran mesej. Kod khusus adalah seperti berikut:

rrreee

Dalam kod di atas, kami menggunakan new WebSocket("ws://127.0.0.1:9502") untuk mencipta objek WebSocket dan lulus Kaedah ws.onopen( ), ws.onmessage() dan ws.onclose() untuk pemantauan acara. Apabila menghantar mesej dalam halaman, anda boleh menghantar mesej ke pelayan melalui kaedah ws.send(). 🎜🎜Kesimpulan🎜🎜Artikel ini menyediakan pengenalan ringkas tentang cara menggunakan WebSocket untuk komunikasi masa nyata dalam pembangunan PHP, yang melibatkan pelaksanaan sambungan Swoole dan halaman hadapan. Dalam penggunaan sebenar, ia juga perlu diselaraskan dan diperbaiki mengikut keperluan perniagaan tertentu. Saya harap artikel ini dapat memberi anda rujukan dan bantuan yang berguna. 🎜

Atas ialah kandungan terperinci Cara menggunakan WebSocket untuk komunikasi masa nyata dalam pembangunan PHP. 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