类别:Workerman / 日期:2019-12-02 / 浏览:187 / 评论:0

Workerman怎样建立一个wss效劳,使得客户端能够用过wss协来衔接通信,比如在微信小顺序中衔接效劳端。

答:

wss协定现实是websocket+SSL,就是在websocket协定上到场SSL层,相似https(http+SSL)。

所以只须要在websocket协定的基础上开启SSL即可支撑wss协定。 (引荐进修: workerman教程)

直接用Workerman开启SSL

准备工作:

1、Workerman版本不小于3.3.7

2、PHP安装了openssl扩大

3、已请求了证书(pem/crt文件及key文件)放在磁盘恣意目次

代码:

<?php
require_once __DIR__ . '/Workerman/Autoloader.php';
use Workerman\Worker;

// 证书最好是请求的证书
$context = array(
    // 更多ssl选项请参考手册 http://php.net/manual/zh/context.ssl.php
    'ssl' => array(
        // 请运用绝对途径
        'local_cert'                 => '磁盘途径/server.pem', // 也能够是crt文件
        'local_pk'                   => '磁盘途径/server.key',
        'verify_peer'                => false,
        // 'allow_self_signed' => true, //假如是自署名证书须要开启此选项
    )
);
// 这里设置的是websocket协定(端口恣意,然则须要保证没被别的顺序占用)
$worker = new Worker('websocket://0.0.0.0:443', $context);
// 设置transport开启ssl,websocket+ssl即wss
$worker->transport = 'ssl';
$worker->onMessage = function($con, $msg) {
    $con->send('ok');
};

Worker::runAll();

经由过程以上的代码,Workerman就监听了wss协定,客户端就能够经由过程wss协定来衔接workerman完成平安即时通信了。

测试

翻开chrome浏览器,按F12翻开调试控制台,在Console一栏输入(或许把下面代码放入到html页面用js运转)

// 证书是会搜检域名的,请运用域名衔接
ws = new WebSocket("wss://域名");
ws.onopen = function() {
    alert("衔接胜利");
    ws.send('tom');
    alert("给效劳端发送一个字符串:tom");
};
    ws.onmessage = function(e) {
    alert("收到效劳端的音讯:" + e.data);
    };

注重:

1、假如没法启动,则平常是443端口被占用,请改成别的端口,注重改成别的端口后客户端衔接时须要带上端口号,客户端衔接时地点相似wss://domain.com:xxx ,xxx为端口号。假如必需运用443端口请运用要领二代办的体式格局完成wss。

2、wss端口只能经由过程wss协定接见,ws没法接见wss端口。

3、证书平常是与域名绑定的,所以测试的时刻客户端请运用域名衔接,不要运用ip去连。

4、假如涌现没法接见的状况,请搜检效劳器防火墙。

5、此要领请求PHP版本>=5.6,由于微信小顺序请求tls1.2,而PHP5.6以下版本不支撑tls1.2。

以上就是workerman怎样设置wss的细致内容,更多请关注ki4网别的相干文章!

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章