Maison  >  Article  >  développement back-end  >  Le principe et l'explication détaillée de la transmission en temps réel par PHP des messages système au client

Le principe et l'explication détaillée de la transmission en temps réel par PHP des messages système au client

藏色散人
藏色散人avant
2020-01-23 14:18:252703parcourir

Le principe et l'explication détaillée de la transmission en temps réel par PHP des messages système au client

Dans notre processus de développement actuel, certaines données doivent être obtenues en temps réel

Par exemple, les informations de commande dans le système ERP, l'approbation du processus dans le système OA ; , etc. doivent être traités en temps opportun, alors nous ne pouvons plus utiliser le protocole http, bien sûr, nous pouvons également utiliser le mécanisme d'interrogation ;

Mais la plupart des demandes d'interrogation sont inutiles, gaspillant la bande passante et les ressources du serveur.

À l'heure actuelle, nous devons utiliser le protocole websocket pour répondre à ce besoin commercial

Préparation :

Installation Extension ; PHP-swoole

Publiez le code directement ;

<?php
new class
{
    private $_serv = null;
    public function __construct()
    {
        $this->_serv = new swoole_websocket_server(&#39;0.0.0.0&#39;, 6552);
        $this->_serv->set(array(
            &#39;worker_num&#39;      => 2,
            &#39;dispatch_mode&#39;   => 3,
        &#39;log_file&#39; => &#39;swoole.log&#39;,
        ));
  //增加个监听端口
    $udpworker =  $this->_serv->listen("127.0.0.1", 6553, SWOOLE_SOCK_UDP);
    $udpworker->on(&#39;Packet&#39;, function ($serv, $data, $addr) {
            $data = json_decode($data, true);
            if(!empty($data)){
                //你的业务逻辑
            }
        });
        $this->_serv->on(&#39;open&#39;, array($this, &#39;onStart&#39;));
        $this->_serv->on(&#39;message&#39;, array($this, &#39;onMessage&#39;));
        $this->_serv->on(&#39;close&#39;, array($this, &#39;onClose&#39;));
        $this->_serv->start();
    }
   
    public function onStart($serv, $request)
    {
        echo "server: connect success with fd {$request->fd}\n";
    }
    //format:&#39;{"school_class_id":"1","school_id":"2"}&#39;
    public function onMessage($serv, $frame)
    {
    /**start*你的业务逻辑***/
    }
    public function onClose($serv, $fd)
    {
        echo "client {$fd} closed\n";
    }
}
?>

Principe :

Créez d'abord un objet serveur websocket et écoutez sur le port 0.0 .0.0:6552, puis utilisez l'objet de service pour écouter le port UDP 6553. Les messages client sont envoyés à l'interface 6553 puis envoyés à l'utilisateur via le port 6552.

Pour plus de connaissances sur php, veuillez visiter le

tutoriel php !

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