ホームページ  >  記事  >  PHPフレームワーク  >  Workerman で WSS を設定する方法

Workerman で WSS を設定する方法

(*-*)浩
(*-*)浩オリジナル
2019-12-02 10:11:546166ブラウズ

Workerman で WSS を設定する方法

Workerman は、クライアントが wss プロトコルを使用して通信に接続できるように (WeChat アプレットでサーバーに接続するなど)、wss サービスをどのように作成しますか。

回答:

wss プロトコルは、実際には WebSocket SSL であり、https (http SSL) と同様に、WebSocket プロトコルに SSL 層を追加します。

したがって、wss プロトコルをサポートするには、WebSocket プロトコルに基づいて SSL を有効にするだけで済みます。 (推奨学習: workerman チュートリアル )

Workerman で直接 SSL を開く

##準備:

1. Workerman のバージョンは 3.3.7 以上です

#2. PHP には openssl 拡張機能がインストールされています

3. 証明書 (pem/crt ファイルおよびキー ファイル) が適用されています任意のディレクトリ

コード:

<?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();
上記のコードを通じて、Workerman は wss プロトコルをリッスンし、クライアントは、安全なインスタント メッセージングを実現するための wss プロトコル。

テスト

Chrome ブラウザを開き、F12 を押してデバッグ コンソールを開き、[コンソール] 列に入力します (または、次のコードを HTML ページに入力して実行します) js)

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

注:

1. 起動できない場合は、通常、ポート 443 が占有されています。別のポートに変更してください。クライアントが接続していることに注意してください。他のポートに変更した後、ポート番号を持ってくる必要があります。クライアントが接続するとき、アドレスは wss://domain.com:xxx のようになります (xxx はポート番号です)。ポート 443 を使用する必要がある場合は、方法 2 プロキシを使用して wss を実装してください。

2. wss ポートには wss プロトコル経由でのみアクセスでき、ws は wss ポートにアクセスできません。

3. 通常、証明書はドメイン名にバインドされているため、テストする場合、クライアントは接続に IP を使用せず、ドメイン名を使用して接続してください。

4. アクセスできない場合は、サーバーのファイアウォールを確認してください。

5.WeChat アプレットには tls1.2 が必要であり、PHP5.6 より前のバージョンは tls1.2 をサポートしていないため、この方法には PHP バージョン 5.6 以上が必要です。

以上がWorkerman で WSS を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。