Maison  >  Article  >  cadre php  >  Apprenez à créer un programme de salle de discussion à l'aide de swoole dans un article

Apprenez à créer un programme de salle de discussion à l'aide de swoole dans un article

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼avant
2019-11-22 17:15:132506parcourir

Apprenez à créer un programme de salle de discussion à l'aide de swoole dans un article

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(&#39;192.168.1.169&#39;, 9502);
 
//设置server运行时的各项参数
$ws_server->set(array(
&#39;daemonize&#39; => true, //是否作为守护进程
));
 
//监听WebSocket连接打开事件
$ws_server->on(&#39;open&#39;, function ($ws, $request) {
file_put_contents( __DIR__ .&#39;/log.txt&#39; , $request->fd);
//$ws->push($request->fd, "Hello, Welcome\n");
});
 
//监听WebSocket消息事件
$ws_server->on(&#39;message&#39;, function ($ws, $frame) {
pushMessage($ws,$frame);
});
 
//监听WebSocket连接关闭事件
$ws_server->on(&#39;close&#39;, function ($ws, $fd) {
echo "client-{$fd} is closed\n";
});
 
$ws_server->start();
 
//消息推送
function pushMessage($ws,$frame){
$data = $frame->data;
$msg = file_get_contents( __DIR__ .&#39;/log.txt&#39;);
for ($i=1 ; $i<= $msg ; $i++) {
$ws->push($i, $frame->fd.&#39; : &#39;.$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(&#39;content&#39;);
    content.innerHTML = content.innerHTML.concat(&#39;<p style="margin-left:20px;height:20px;line-height:20px;">
    用户id-&#39;+event.data+&#39;</p>&#39;);
  }
 
  var sendMessage = function(){
  var data = document.getElementById(&#39;message&#39;).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 :

Apprenez à créer un programme de salle de discussion à laide de swoole dans un article

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.

Apprenez à créer un programme de salle de discussion à laide de swoole dans un article

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 :

Apprenez à créer un programme de salle de discussion à laide de swoole dans un article

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 de

tutoriels d'introduction au swoole gratuits, bienvenue pour apprendre en ligne !

Cet article est reproduit à partir de : https://blog.csdn.net/tdcqfyl/article/details/52370804

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer