WebSocket est un protocole de communication full-duplex qui peut établir une connexion en temps réel entre le serveur et le client pour établir une communication en temps réel. Dans le développement Web, le framework PHP couramment utilisé est ThinkPHP. Alors, comment utiliser WebSocket pour la communication en temps réel dans ThinkPHP6 ?
Vous devez d'abord installer l'extension swoole sur le serveur, vous pouvez utiliser la commande composer pour l'installer : # 🎜🎜#
composer require swoole/swoole#🎜 🎜#Remarque : L'utilisation de l'extension swoole nécessite une version PHP >=7.0. Créer un service WebSocket
php think make:command WebSocket
Après avoir exécuté la commande, le fichier WebSocket.php sera généré dans le répertoire app/command. Dans le fichier, ajoutez le code suivant :
<?php namespace appcommand; use swoole_websocket_server; use swoole_http_request; use thinkconsoleCommand; use thinkconsoleInput; use thinkconsoleOutput; class WebSocket extends Command { protected function configure() { // 给命令起一个名字 $this->setName('swoole:websocket') ->setDescription('Start websocket server'); } protected function execute(Input $input, Output $output) { $server = new swoole_websocket_server("0.0.0.0", 9501); // 监听WebSocket连接打开事件 $server->on('open', function (swoole_websocket_server $server, swoole_http_request $request) { echo "connection open: {$request->fd} "; }); // 监听WebSocket消息事件 $server->on('message', function (swoole_websocket_server $server, $frame) { echo "received message: {$frame->data} "; // 广播消息给所有连接的客户端 $server->push($frame->fd, "this is server"); }); // 监听WebSocket连接关闭事件 $server->on('close', function ($ser, $fd) { echo "connection close: {$fd} "; }); $server->start(); } }
Exécutez la commande suivante pour démarrer le service WebSocket :
php think swoole:websocketUtiliser WebSocket dans la vue
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>WebSocket</title> </head> <body> <script> var ws = new WebSocket('ws://localhost:9501'); ws.onopen = function(){ console.log('WebSocket open'); }; ws.onmessage = function(ev){ console.log('WebSocket message: ' + ev.data); }; ws.onclose = function(){ console.log('WebSocket close'); }; </script> </body> </html>
Le code ci-dessus crée une instance WebSocket et se connecte au service WebSocket local. Lorsque le serveur envoie un message, la fonction onmessage est appelée pour le traitement. Vous pouvez envoyer des messages au serveur en appelant la fonction d'envoi de l'instance.
À ce stade, le service WebSocket a été créé avec succès et a établi une connexion de communication en temps réel avec le front-end.
Summary
Dans ThinkPHP6, avec l'aide de l'extension swoole, la fonction de communication en temps réel de WebSocket peut être facilement implémentée. En activant le service WebSocket via des commandes personnalisées et en le combinant avec l'API JavaScript WebSocket, une communication en temps réel peut être réalisée dans les applications Web pour répondre à une variété de besoins commerciaux.
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!