WebSocket (ws) est un nouveau protocole de communication ajouté en html5 Actuellement, les navigateurs populaires prennent en charge ce protocole , tels que Chrome, Safrie, Firefox, Opera, IE. , etc., la première prise en charge de ce protocole devrait être Chrome, qui est pris en charge depuis Chrome12. À mesure que le projet de protocole continue de changer, l'implémentation du protocole par chaque navigateur est également constamment mise à jour. (Apprentissage recommandé : tutoriel vidéo swoole )
swoole 1.7.9 ajoute la prise en charge intégrée du serveur WebSocket, et vous pouvez écrire un multi-processus asynchrone non bloquant avec quelques lignes de code PHP du serveur WebSocket.
$server = new Swoole\WebSocket\Server("0.0.0.0", 9501); $server->on('open', function (Swoole\WebSocket\Server $server, $request) { echo "server: handshake success with fd{$request->fd}\n"; }); $server->on('message', function (Swoole\WebSocket\Server $server, $frame) { echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n"; $server->push($frame->fd, "this is server"); }); $server->on('close', function ($ser, $fd) { echo "client {$fd} closed\n"; }); $server->start();
En plus de recevoir les fonctions de rappel des classes de base SwooleServer et SwooleHttpServer, le serveur WebSocket ajoute 3 paramètres de fonction de rappel supplémentaires. Parmi eux :
La fonction de rappel onMessage est requise
Les fonctions de rappel onOpen et onHandShake sont facultatives
WebSocketServer est une sous-classe de Server, il peut donc être appelé Toutes les méthodes du serveur.
Il convient de noter que le serveur WebSocket doit utiliser la méthode WebSocketServer::push pour envoyer des données au client. Cette méthode empaquetera le protocole WebSocket. La méthode Server::send est l'interface d'envoi TCP d'origine.
La méthode WebSocketServer::disconnect peut fermer activement une connexion WebSocket depuis le serveur et spécifier le code d'état (selon le protocole WebSocket, le code d'état utilisable est un entier décimal et la valeur peut être 1000 ou 4000 -4999 ) et la raison de la fermeture (une chaîne codée en UTF-8 et d'une longueur d'octet ne dépassant pas 125).
Le code d'état est 1000 lorsqu'il n'est pas spécifié et la raison de l'arrêt est vide
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!