类别: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网别的相干文章!