Comment créer un environnement websocket en PHP : 1. Recherchez l'extension sockets dans le fichier php.ini et supprimez le point-virgule devant elle ; 2. Mettez à niveau http vers websocket ; 3. Configurez les variables d'environnement et ajoutez le chemin d'installation de PHP ; vers le chemin 4. Entrez "php Path" dans cmd.
L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 8.1, ordinateur Dell G3.
Comment mettre en place un environnement websocket en php ?
PHP crée un serveur websocket
Pour créer ce serveur, vous devez d'abord activer l'extension sockets. Si elle n'est pas activée, une erreur sera de toute façon signalée
Trouvez simplement l'extension sockets dans le php.ini. fichier et supprimez le point-virgule devant lui. Supprimez-le pour l'ouvrir
Avant l'ouverture :
;extension=sockets
Après ouverture :
extension=sockets
Après l'ouverture, on peut d'abord entrer dans le vif du sujet, on comprend quelques fonctions :
socket_create(AF_INET, SOCK_STREAM, SOL_TCP);//用于创建套接字 socket_bind( $this->master,$ip,$port);//用于绑定ip和端口 socket_listen( $this->master,1000);//用于调用connect连接的套接字和监听相关端口 socket_accept($this->master);//负责握手连接 socket_recv($socket, $buffer, 1024, 0);//从已连接的socket(客户端)接收数据 socket_write($socket,$upgrade,strlen($upgrade));//给单独客户端发送数据 send($message)//发送数据 socket_close($socket);//断开连接
; De nombreuses étapes sont similaires à la création d'un socket en PHP.
La principale différence est que l'utilisation et les données de socket_write doivent être décodées et encadrées. Nous devons mettre à niveau http vers websocket
http vers websocket
if(preg_match("/Sec-WebSocket-Key: (.*)\r\n/",$buffer,$match)){ $responseKey=base64_encode(sha1($match[1] . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',true)); $upgrade="HTTP/1.1 101 Switching Protocol\r\n". "Upgrade: websocket\r\n". "Connection: Upgrade\r\n". "Sec-WebSocket-Accept:".$responseKey."\r\n\r\n"; socket_write($socket,$upgrade,strlen($upgrade)); }
$socket est la connexion que nous avons. créé, $buffer est envoyé lorsque le client se connecte pour la première fois Data
Remarque : Sec-WebSocket-Key : (.*)//Il doit y avoir des espaces entre crochets et deux-points
Décadrage
$len=$masks=$data=$decoded=null; $len=ord($buffer[1]) & 127; if($len === 126){ $masks=substr($buffer,4,4); $data=substr($buffer, 8); }else if($len === 127){ $masks=substr($buffer,10,4); $data=substr($buffer, 14); }else{ $masks=substr($buffer,2,4); $data=substr($buffer, 6); } for($index = 0;$index<strlen($data);$index++){ $decoded.=$data[$index] ^ $masks[$index % 4]; } return $decoded;
$buffer correspond aux données envoyé lorsque le client se connecte pour la première fois
Scellement du cadre
$len=strlen($message); if($len<=125){ return "\x81".chr($len).$message; }else if($len<=65535){ return "\x81".chr(126).pack("n",$len).$message; }else{ return "\x81".chr(127).pack("xxxxN",$len).$message; }
$message sont les données que nous devons envoyer
N'oubliez pas d'exécuter le serveur avant de vous connecter au front-end. Comment exécuter :
Entrez
php 你的服务端PHP文件路径
dans. cmd Configurez les variables d'environnement avant d'exécuter : ajoutez votre chemin d'installation PHP au chemin d'apprentissage recommandé dans
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!