>  기사  >  PHP 프레임워크  >  Workerman에서 wss를 구성하는 방법

Workerman에서 wss를 구성하는 방법

(*-*)浩
(*-*)浩원래의
2019-12-02 10:11:546157검색

Workerman에서 wss를 구성하는 방법

Workerman은 WeChat 애플릿에서 서버에 연결하는 등 클라이언트가 wss 프로토콜을 사용하여 통신에 연결할 수 있도록 wss 서비스를 어떻게 생성합니까?

답변:

wss 프로토콜은 실제로 websocket+SSL입니다. 이는 https(http+SSL)와 유사하게 websocket 프로토콜에 SSL 레이어를 추가하는 것을 의미합니다.

따라서 wss 프로토콜을 지원하려면 websocket 프로토콜 기반 SSL을 활성화하기만 하면 됩니다. (권장) 학습 종료: workerman 튜토리얼 )

Workerman으로 직접 SSL 열기

준비 작업:

1. Workerman 버전은 3.3.7

2 이상입니다.

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 프로토콜을 통해 Workererman에 연결하세요.

Test

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.