1. Créer un serveur websocket
swoole a une fonction de serveur websocket intégrée à partir de la version 1.7.9. , nous Avec seulement quelques lignes de code PHP simple, vous pouvez créer un serveur WebSocket multi-processus asynchrone et non bloquant.
Tout d'abord, nous créons un nouveau projet dans l'espace de travail Apache, nommé swoole, puis y créons un nouveau fichier ws-server.php. Ce fichier php crée principalement un serveur websocket et répond aux demandes des utilisateurs. le contenu est le suivant :
<?php //创建websocket服务器对象,监听0.0.0.0:9502端口 $ws_server = new swoole_websocket_server('192.168.1.169', 9502); //设置server运行时的各项参数 $ws_server->set(array( 'daemonize' => true, //是否作为守护进程 )); //监听WebSocket连接打开事件 $ws_server->on('open', function ($ws, $request) { file_put_contents( __DIR__ .'/log.txt' , $request->fd); //$ws->push($request->fd, "Hello, Welcome\n"); }); //监听WebSocket消息事件 $ws_server->on('message', function ($ws, $frame) { pushMessage($ws,$frame); }); //监听WebSocket连接关闭事件 $ws_server->on('close', function ($ws, $fd) { echo "client-{$fd} is closed\n"; }); $ws_server->start(); //消息推送 function pushMessage($ws,$frame){ $data = $frame->data; $msg = file_get_contents( __DIR__ .'/log.txt'); for ($i=1 ; $i<= $msg ; $i++) { $ws->push($i, $frame->fd.' : '.$data); } }
Le code ci-dessus crée un serveur WebSocket avec une adresse IP de 192.168.1.169 et un port de 9502. Ces informations peuvent être ajustées en fonction de la situation réelle.
2. Créez une page d'interaction par chat
De même, dans le répertoire swoole, nous créons un nouveau fichier chat.html, qui est une page html5 purement statique. La fonction est d'interagir avec le serveur websocket via le protocole WebSocket de html5. Son contenu est le suivant :
<!DOCTYPE html> <html> <head> <title></title> <meta charset="UTF-8"> <script type="text/javascript"> if(window.WebSocket){ var webSocket = new WebSocket("ws://192.168.1.169:9502"); webSocket.onopen = function (event) { //webSocket.send("Hello,WebSocket!"); }; webSocket.onmessage = function (event) { var content = document.getElementById('content'); content.innerHTML = content.innerHTML.concat('<p style="margin-left:20px;height:20px;line-height:20px;"> 用户id-'+event.data+'</p>'); } var sendMessage = function(){ var data = document.getElementById('message').value; webSocket.send(data); } }else{ console.log("您的浏览器不支持WebSocket"); } </script> </head> <body> <div style="width:600px;margin:0 auto;border:1px solid #ccc;"> <div id="content" style="overflow-y:auto;height:300px;"></div> <hr/> <div style="height:40px"> <input type="text" id="message" style="margin-left:10px;height:25px;width:450px;"> <button οnclick="sendMessage()" style="height:28px;width:75px;">发送</button> </div> </div> </body> </html>
Test
Jusqu'à présent, les deux fichiers que nous avons. il faut qu'il ait été créé, testons s'il fonctionne comme prévu.
3.1 Démarrez le serveur WebSocket
Basculez vers le répertoire racine du projet, puis exécutez le script ws-server.php via la ligne de commande php pour démarrer le serveur WebSocket La commande entière. est la suivante :
cd /var/www/html/swoole php ws-server.php
Comme indiqué sur l'image :
3.2 Vérifiez si le serveur WebSocket a démarré avec succès
Entrez la commande : netstat -tunlp|grep 9502, si cela est visible Lorsque vous atteignez l'interface suivante, cela signifie que le serveur WebSocket a démarré avec succès.
3.3 Commencez à discuter
Préparez quelques navigateurs supplémentaires, puis entrez http://192.168.1.169/swoole/ dans chaque navigateur chat.html, chaque navigateur équivaut à un utilisateur, et une discussion de groupe peut alors être simulée.
Dans la fenêtre de discussion du navigateur Chrome, saisissez "Bonjour à tous, je suis Chrome". À ce moment, vous verrez ce message dans la fenêtre de discussion des navigateurs UC et Firefox. De la même manière, lorsque vous saisissez des informations dans la fenêtre de discussion des navigateurs UC et Firefox, les deux autres fenêtres sont également visibles. Voici une capture d'écran de l'une des fenêtres de discussion, comme suit :
L'interface de chat est un peu moche, mais la fonction est réalisée et l'interface peut embellir le front-end de l'interface utilisateur. Ensuite, vous pouvez discuter joyeusement. N'est-ce pas très simple ? Site Web PHP chinois, un grand nombre detutoriels d'introduction au swoole gratuits, bienvenue pour apprendre en ligne !
Cet article est reproduit à partir de : https://blog.csdn.net/tdcqfyl/article/details/52370804Ce 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!