Maison > cadre php > Workerman > Développement Workerman : Comment implémenter un serveur Web basé sur le protocole HTTP2

Développement Workerman : Comment implémenter un serveur Web basé sur le protocole HTTP2

王林
Libérer: 2023-11-07 11:25:57
original
1014 Les gens l'ont consulté

Développement Workerman : Comment implémenter un serveur Web basé sur le protocole HTTP2

Workerman Development : Comment implémenter un serveur Web basé sur le protocole HTTP2

HTTP2 est une version de nouvelle génération du protocole HTTP, qui a considérablement amélioré les performances et la sécurité. Workerman est un framework de communication PHP en temps réel couramment utilisé, qui présente les avantages de hautes performances, d'extension facile et de facilité d'utilisation. Comment implémenter un serveur web basé sur le protocole HTTP2 ? Cet article présentera les aspects suivants :

  1. Comprendre les caractéristiques du protocole HTTP2
  2. Comment Workerman prend en charge le protocole HTTP2
  3. Serveur Web qui implémente le protocole HTTP2 spécifique
  4. Exemples de code

1. Comprendre les caractéristiques du protocole HTTP2 Protocole HTTP2

Le protocole HTTP2 est une version nouvelle génération du protocole HTTP, qui a grandement amélioré les performances et la sécurité. Par rapport au protocole HTTP1.x, il présente les caractéristiques suivantes :

  1. Protocole binaire : HTTP2 utilise un protocole binaire, tandis que HTTP1.x utilise un protocole texte. Les protocoles binaires analysent et transfèrent les données plus rapidement.
  2. Multiplexage : HTTP2 peut transmettre plusieurs requêtes et réponses en parallèle sur la même connexion. Cela réduit l’établissement de connexion et la latence, améliorant ainsi la réactivité globale du site Web.
  3. Compression des en-têtes : HTTP2 utilise l'algorithme HPACK pour compresser les en-têtes des requêtes et des réponses, réduisant ainsi la taille de la transmission des données et améliorant les performances.
  4. Push du serveur : HTTP2 peut activement transmettre au client les fichiers de ressources liés aux pages Web, réduisant ainsi le nombre de requêtes des clients et améliorant la vitesse d'ouverture des pages Web.

2. Comment Workerman prend-il en charge le protocole HTTP2 ?

Workerman est un framework de communication en temps réel PHP couramment utilisé. Il a été initialement conçu pour implémenter une communication haute performance basée sur le protocole TCP, mais il prend également en charge le protocole HTTP. . Workerman utilise le protocole HTTP1.x par défaut, mais il prend également en charge le protocole HTTP2.

La condition de base pour mettre en œuvre le protocole HTTP2 est d'avoir un certificat SSL, car le protocole HTTP2 ne supporte qu'une utilisation en mode cryptage. Par conséquent, nous devons configurer le certificat SSL dans Workerman pour prendre en charge le protocole HTTP2. La méthode de configuration spécifique est la suivante :

$context = array(
    // 这是key, 一般和crt放在一起
    'ssl' => array(
        // 请使用绝对路径
        'local_cert' => '/your/path/to/server.crt', // 服务端证书
        'local_pk' => '/your/path/to/server.key', // 服务端证书的私钥
        'verify_peer' => false, // 是否需要验证客户端证书
    )
);

// 初始化一个Worker监听http://0.0.0.0:443
$worker = new Worker("http://0.0.0.0:443", $context);

// 开启对HTTP2.0的支持
$worker->transport = 'ssl';
$worker->protocol = "Http2";
Copier après la connexion

3. Implémentez le serveur Web du protocole HTTP2 spécifique

Une fois que Workerman a pris en charge le protocole HTTP2, nous pouvons implémenter le serveur Web du protocole HTTP2. Il existe de nombreuses méthodes d'implémentation spécifiques. Nous prenons ici comme exemple l'implémentation d'un serveur Web de base avec le protocole HTTP2.

  1. Créez un fichier PHP, nommé http2_server.php, entrez le code suivant :
<?php
require_once __DIR__ . '/../vendor/autoload.php';

$context = array(
    'ssl' => array(
        'local_cert' => '/your/path/to/server.crt',
        'local_pk' => '/your/path/to/server.key',
        'verify_peer' => false,
    )
);

$worker = new WorkermanWorker('http://0.0.0.0:443', $context);

$worker->transport = 'ssl';
$worker->protocol = "Http2";

$worker->onConnect = function($connection) {
    echo "new connection from ip " . $connection->getRemoteIp() . "
";
};

$worker->onMessage = function($connection, $data) {
    $request_uri = $_SERVER['REQUEST_URI'];
    $response = "Hello, HTTP2!
";
    $connection->send($response);
};

Worker::runAll();
Copier après la connexion
Copier après la connexion
  1. Démarrez le serveur web

Exécutez la commande suivante pour démarrer le serveur web :

php http2_server.php start -d
Copier après la connexion

A ce moment, si vous utilisez un navigateur pour accéder à https://localhost, vous devriez pouvoir voir la page avec le contenu Hello, HTTP2!.

4. Exemple de code

Le code a été donné dans la troisième partie, et le code complet est à nouveau donné ici. Il vous suffit de remplacer /your/path/to/server.crt et /your/path/to/server.key par votre propre chemin de certificat SSL.

<?php
require_once __DIR__ . '/../vendor/autoload.php';

$context = array(
    'ssl' => array(
        'local_cert' => '/your/path/to/server.crt',
        'local_pk' => '/your/path/to/server.key',
        'verify_peer' => false,
    )
);

$worker = new WorkermanWorker('http://0.0.0.0:443', $context);

$worker->transport = 'ssl';
$worker->protocol = "Http2";

$worker->onConnect = function($connection) {
    echo "new connection from ip " . $connection->getRemoteIp() . "
";
};

$worker->onMessage = function($connection, $data) {
    $request_uri = $_SERVER['REQUEST_URI'];
    $response = "Hello, HTTP2!
";
    $connection->send($response);
};

Worker::runAll();
Copier après la connexion
Copier après la connexion

Résumé

Le protocole HTTP2 est une version nouvelle génération du protocole HTTP Par rapport au protocole HTTP1.x, il a été grandement amélioré en termes de performances et de sécurité. Workerman est un framework de communication PHP en temps réel couramment utilisé qui prend en charge le protocole HTTP2. Cet article décrit comment utiliser Workerman pour implémenter un serveur Web basé sur le protocole HTTP2, notamment la configuration d'un certificat SSL et l'implémentation d'un serveur Web spécifique.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal