Heim > PHP-Framework > Workerman > Hauptteil

So konfigurieren Sie WSS in Workerman

(*-*)浩
Freigeben: 2019-12-02 10:11:54
Original
6016 Leute haben es durchsucht

So konfigurieren Sie WSS in Workerman

Wie erstellt Workerman einen WSS-Dienst, damit der Client das WSS-Protokoll verwenden kann, um eine Verbindung zur Kommunikation herzustellen, z. B. eine Verbindung zum Server im WeChat-Applet?

Antwort:

Das WSS-Protokoll ist eigentlich Websocket+SSL, was bedeutet, dass dem Websocket-Protokoll eine SSL-Schicht hinzugefügt wird, ähnlich wie https (http+SSL). ).

Sie müssen also nur SSL basierend auf dem Websocket-Protokoll aktivieren, um das WSS-Protokoll zu unterstützen. (Empfohlenes Lernen: Workerman-Tutorial)

SSL direkt mit Workerman öffnen

Vorbereitung:

1. Workerman-Version ist nicht niedriger als 3.3.7

2. PHP hat die OpenSSL-Erweiterung installiert

3. Das Zertifikat (PEM/CRT-Datei und Schlüsseldatei) wurde angewendet und auf der Festplatte abgelegt. Beliebiges Verzeichnis

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();
Nach dem Login kopieren

Mit dem obigen Code überwacht Workerman das WSS-Protokoll, und der Client kann über das WSS-Protokoll eine Verbindung zu Workerman herstellen um sicheres Instant Messaging zu erreichen.

Test

Öffnen Sie den Chrome-Browser, drücken Sie F12, um die Debugging-Konsole zu öffnen, geben Sie in die Spalte „Konsole“ ein (oder fügen Sie den folgenden Code in die HTML-Seite ein und führen Sie ihn aus mit js)

rrree

Hinweis:

1. Wenn es nicht gestartet werden kann, ist Port 443 normalerweise belegt. Beachten Sie, dass der Client eine Verbindung herstellt Nachdem Sie ihn auf einen anderen Port geändert haben, müssen Sie die Portnummer angeben. Wenn der Client eine Verbindung herstellt, ähnelt die Adresse wss://domain.com:xxx, wobei xxx die Portnummer ist. Wenn Sie Port 443 verwenden müssen, verwenden Sie bitte die Proxy-Methode zwei, um wss zu implementieren.

2. Auf den WSS-Port kann nur über das WSS-Protokoll zugegriffen werden, und ws kann nicht auf den WSS-Port zugreifen.

3. Zertifikate sind im Allgemeinen an Domänennamen gebunden, daher sollte der Client beim Testen Domänennamen zum Herstellen einer Verbindung verwenden und keine IP zum Herstellen einer Verbindung verwenden.

4. Wenn Sie keinen Zugriff haben, überprüfen Sie bitte die Server-Firewall.

5. Diese Methode erfordert eine PHP-Version >=5.6, da das WeChat-Applet tls1.2 erfordert und PHP-Versionen unter 5.6 tls1.2 nicht unterstützen.

Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie WSS in Workerman. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!