Maison >cadre php >Workerman >Comment configurer WSS dans Workmanman

Comment configurer WSS dans Workmanman

(*-*)浩
(*-*)浩original
2019-12-02 10:11:546229parcourir

Comment configurer WSS dans Workmanman

Comment Workerman crée-t-il un service wss afin que le client puisse utiliser le protocole wss pour se connecter à la communication, par exemple en se connectant au serveur dans l'applet WeChat.

Réponse :

Le protocole wss est en fait websocket+SSL, ce qui signifie ajouter une couche SSL au protocole websocket, similaire à https (http+SSL ).

Il vous suffit donc d'activer SSL basé sur le protocole websocket pour prendre en charge le protocole wss. (Apprentissage recommandé : Tutoriel Workerman)

Ouvrir SSL directement avec Workerman

Préparation :

1. La version de Workerman n'est pas inférieure à 3.3.7

2. PHP a l'extension openssl installée

3 Le certificat (fichier pem/crt et fichier de clé) a été appliqué et placé sur le disque N'importe quel répertoire

Code :

<?php
require_once __DIR__ . &#39;/Workerman/Autoloader.php&#39;;
use Workerman\Worker;

// 证书最好是申请的证书
$context = array(
    // 更多ssl选项请参考手册 http://php.net/manual/zh/context.ssl.php
    &#39;ssl&#39; => array(
        // 请使用绝对路径
        &#39;local_cert&#39;                 => &#39;磁盘路径/server.pem&#39;, // 也可以是crt文件
        &#39;local_pk&#39;                   => &#39;磁盘路径/server.key&#39;,
        &#39;verify_peer&#39;                => false,
        // &#39;allow_self_signed&#39; => true, //如果是自签名证书需要开启此选项
    )
);
// 这里设置的是websocket协议(端口任意,但是需要保证没被其它程序占用)
$worker = new Worker(&#39;websocket://0.0.0.0:443&#39;, $context);
// 设置transport开启ssl,websocket+ssl即wss
$worker->transport = &#39;ssl&#39;;
$worker->onMessage = function($con, $msg) {
    $con->send(&#39;ok&#39;);
};

Worker::runAll();

Grâce au code ci-dessus, Workerman surveille le protocole wss et le client peut se connecter à Workerman via le wss protocole pour obtenir une messagerie instantanée sécurisée.

Test

Ouvrez le navigateur Chrome, appuyez sur F12 pour ouvrir la console de débogage, entrez dans la colonne Console (ou mettez le code suivant dans la page html et exécutez-le avec js)

// 证书是会检查域名的,请使用域名连接
ws = new WebSocket("wss://域名");
ws.onopen = function() {
    alert("连接成功");
    ws.send(&#39;tom&#39;);
    alert("给服务端发送一个字符串:tom");
};
    ws.onmessage = function(e) {
    alert("收到服务端的消息:" + e.data);
    };

Remarque :

1 S'il ne peut pas être démarré, le port 443 est généralement occupé. Veuillez le remplacer par un autre port. après l'avoir remplacé par un autre port, vous devez apporter le numéro de port. Lorsque le client se connecte, l'adresse est similaire à wss://domain.com:xxx, où xxx est le numéro de port. Si vous devez utiliser le port 443, veuillez utiliser le proxy de la méthode 2 pour implémenter wss.

2. Le port wss n'est accessible que via le protocole wss, et ws ne peut pas accéder au port wss.

3. Les certificats sont généralement liés aux noms de domaine, donc lors des tests, le client doit utiliser des noms de domaine pour se connecter et ne pas utiliser l'IP pour se connecter.

4. Si vous ne parvenez pas à accéder, veuillez vérifier le pare-feu du serveur.

5. Cette méthode nécessite la version PHP >=5.6, car l'applet WeChat nécessite tls1.2 et les versions PHP inférieures à 5.6 ne prennent pas en charge tls1.2.

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:
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