Maison  >  Article  >  développement back-end  >  Implémenter le service WebSocket en utilisant PHP

Implémenter le service WebSocket en utilisant PHP

WBOY
WBOYoriginal
2023-06-22 11:41:247285parcourir

Avec le développement d'Internet, la technologie WebSocket est de plus en plus utilisée. La technologie WebSocket peut réaliser une communication bidirectionnelle en temps réel et convient à certains scénarios d'application tels que la messagerie instantanée et les jeux, et peut offrir une meilleure expérience utilisateur. Cet article explique comment implémenter le service WebSocket à l'aide de PHP.

1. Introduction à WebSocket
WebSocket est un nouveau protocole proposé par HTML5. Il s'agit d'un protocole de communication en duplex intégral sur une seule connexion TCP. Il prend en charge la communication en temps réel, a une latence inférieure à HTTP et peut transmettre de grandes quantités. de données. L'utilisation de WebSocket permet d'obtenir une communication en temps réel tout en réduisant la surcharge du serveur et en économisant la bande passante du réseau.

2. Méthode d'implémentation de WebSocket

  1. Serveur

(1) Créer un serveur WebSocket :

// 创建WebSocket服务器
$server = new swoole_websocket_server("0.0.0.0", 9502);

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

// 监听WebSocket消息事件
$server->on('message', function (swoole_websocket_server $server, $frame) {
    // 处理接收到的消息
    $message = "server received message: {$frame->data}
";
    // 向WebSocket客户端发送消息
    $server->push($frame->fd, $message);
});

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

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

(2) Message push du serveur :

// 向WebSocket客户端发送消息
$server->push($frame->fd, $message);
  1. Client

(1) Créer une connexion WebSocket :

// 创建WebSocket连接
var ws = new WebSocket("ws://localhost:9502");

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

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

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

( 2) Le client envoie un message :

// 向WebSocket服务器发送消息
ws.send("hello");

3. Explication détaillée du processus de mise en œuvre

Ci-dessous, nous présenterons en détail chaque partie du bloc de code ci-dessus.

  1. Serveur

(1) Créez un serveur WebSocket :

// 创建WebSocket服务器
$server = new swoole_websocket_server("0.0.0.0", 9502);

Ce code crée un serveur WebSocket, en spécifiant l'adresse IP comme 0.0.0.0 et le port comme 9502.

(2) Écoutez les événements de connexion WebSocket :

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

Lorsqu'un client WebSocket est connecté, l'événement 'open' sera déclenché. $request ici est un objet qui contient des informations sur la connexion client, telles que l'adresse IP du client, l'heure de connexion, etc.

(3) Écoutez les événements de message WebSocket :

// 监听WebSocket消息事件
$server->on('message', function (swoole_websocket_server $server, $frame) {
    // 处理接收到的消息
    $message = "server received message: {$frame->data}
";
    // 向WebSocket客户端发送消息
    $server->push($frame->fd, $message);
});

Lorsque le client WebSocket envoie un message, l'événement 'message' sera déclenché. Le $frame ici est un objet qui contient des informations sur le message reçu, telles que le contenu du message, l'heure d'envoi, etc.

(4) Écoutez les événements de fermeture de WebSocket :

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

Lorsque le client WebSocket ferme la connexion, l'événement 'close' sera déclenché. $fd voici l'identifiant unique de la connexion client.

(5) Démarrez le serveur WebSocket :

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

Utilisez la méthode start() pour démarrer le serveur WebSocket afin de commencer à écouter les connexions et les messages clients.

(6) Message push du serveur :

// 向WebSocket客户端发送消息
$server->push($frame->fd, $message);

Utilisez la méthode push() pour envoyer un message au client spécifié. $frame->fd est l'identifiant unique de la connexion client et $message est le contenu du message à envoyer.

  1. Client

(1) Créer une connexion WebSocket :

// 创建WebSocket连接
var ws = new WebSocket("ws://localhost:9502");

Ce code crée une connexion WebSocket, en spécifiant l'URL comme ws://localhost:9502. Parmi eux, ws représente le type de protocole, localhost représente l'adresse IP du serveur WebSocket et 9502 représente le numéro de port d'écoute.

(2) Écoutez les événements de connexion WebSocket :

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

Lorsque la connexion WebSocket est réussie, l'événement 'open' sera déclenché. Ici, nous utilisons la méthode console.log() pour générer un message.

(3) Écoutez les événements de message WebSocket :

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

Lorsque le client WebSocket reçoit un message, l'événement 'message' sera déclenché. Ici, nous utilisons la méthode console.log() pour générer un message.

(4) Écoutez l'événement de fermeture WebSocket :

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

Lorsque la connexion WebSocket est fermée, l'événement 'close' sera déclenché. Ici, nous utilisons la méthode console.log() pour générer un message.

(5) Le client envoie un message :

// 向WebSocket服务器发送消息
ws.send("hello");

Utilisez la méthode send() pour envoyer un message au serveur WebSocket. Ici, nous envoyons une chaîne "bonjour".

4. Résumé

Cet article présente comment utiliser PHP pour implémenter les services WebSocket. La technologie WebSocket est largement utilisée dans les communications en temps réel, les jeux et d'autres domaines. Elle a une latence inférieure à celle de HTTP et peut offrir une meilleure expérience utilisateur. L'utilisation de PHP pour implémenter les services WebSocket permet d'établir rapidement et facilement une communication en temps réel, de réduire la surcharge du serveur et d'économiser la bande passante du réseau.

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