Maison  >  Article  >  développement back-end  >  Comment utiliser WebSocket pour la communication en temps réel dans le développement PHP

Comment utiliser WebSocket pour la communication en temps réel dans le développement PHP

WBOY
WBOYoriginal
2023-06-25 19:18:16791parcourir

Avec le développement croissant d'Internet, la communication en temps réel est devenue une partie indissociable de nous. En tant que l'un des protocoles de mise à niveau HTTP, WebSocket est plus efficace et plus stable sur la base du protocole TCP. En développement PHP, comment utiliser WebSocket pour réaliser une communication en temps réel ? Cet article le présentera sous les aspects suivants.

WebSocket Introduction

WebSocket est un protocole réseau qui communique sur la base du protocole TCP et est généralement utilisé pour la communication en temps réel. Différent du protocole HTTP, WebSocket peut maintenir une longue connexion entre le serveur et le client, réaliser une communication en duplex intégral et avoir une efficacité de transmission de données plus élevée. Dans le protocole HTTP traditionnel, le client obtient des données du serveur via une requête, et le serveur répond à la requête puis renvoie les données au client Même s'il n'y a pas de transmission de données, la connexion TCP doit être maintenue. Dans WebSocket, la connexion ne doit être établie qu'une seule fois lors de la prise de contact, et la transmission de données ultérieure peut être basée sur cette connexion sans qu'il soit nécessaire d'établir une connexion à chaque fois.

Utiliser l'extension Swoole

Swoole est un framework de communication réseau hautes performances développé pour PHP, prenant en charge les coroutines et les opérations d'E/S asynchrones, et prend également en charge le protocole WebSocket. Lors de l'utilisation de l'extension Swoole pour implémenter la communication en temps réel WebSocket, vous devez utiliser la classe de serveur WebSocket fournie par la bibliothèque Swoole.

Installer 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

Créer un serveur 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();

Dans le code ci-dessus, nous créons d'abord un objet serveur WebSocket à surveiller. Utilisez ensuite la méthode $server->on() pour écouter respectivement l'ouverture de la connexion WebSocket, les messages, la fermeture de la connexion et d'autres événements. Après avoir reçu le message envoyé par le client, le serveur imprimera le contenu du message sur la console et renverra le message au client via la méthode $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()

Implémentation de la page frontale

Après avoir créé le serveur WebSocket, nous devons écrire du code JavaScript sur la page frontale, créer des objets WebSocket et effectuer une surveillance des événements et des messages envoi. Le code spécifique est le suivant :

rrreee

Dans le code ci-dessus, nous utilisons new WebSocket("ws://127.0.0.1:9502") pour créer un objet WebSocket et transmettez les méthodes ws.onopen(), ws.onmessage() et ws.onclose() pour la surveillance des événements. Lors de l'envoi d'un message dans la page, vous pouvez envoyer le message au serveur via la méthode ws.send(). #🎜🎜##🎜🎜#Conclusion#🎜🎜##🎜🎜#Cet article fournit une brève introduction à la façon d'utiliser WebSocket pour la communication en temps réel dans le développement PHP, ce qui implique la mise en œuvre d'extensions Swoole et de pages frontales. En utilisation réelle, il doit également être ajusté et amélioré en fonction des besoins spécifiques de l'entreprise. J'espère que cet article pourra vous fournir une référence et une aide utiles. #🎜🎜#

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn