您好,登錄后才能下訂單哦!
這篇文章主要介紹workerman配置wss的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
Workerman如何創(chuàng)建一個(gè)wss服務(wù),使得客戶端可以用過(guò)wss協(xié)來(lái)連接通訊,比如在微信小程序中連接服務(wù)端。
答:
wss協(xié)議實(shí)際是websocket+SSL,就是在websocket協(xié)議上加入SSL層,類似https(http+SSL)。
所以只需要在websocket協(xié)議的基礎(chǔ)上開啟SSL即可支持wss協(xié)議。
直接用Workerman開啟SSL
準(zhǔn)備工作:
1、Workerman版本不小于3.3.7
2、PHP安裝了openssl擴(kuò)展
3、已經(jīng)申請(qǐng)了證書(pem/crt文件及key文件)放在磁盤任意目錄
代碼:
<?php require_once __DIR__ . '/Workerman/Autoloader.php'; use Workerman\Worker; // 證書最好是申請(qǐng)的證書 $context = array( // 更多ssl選項(xiàng)請(qǐng)參考手冊(cè) http://php.net/manual/zh/context.ssl.php 'ssl' => array( // 請(qǐng)使用絕對(duì)路徑 'local_cert' => '磁盤路徑/server.pem', // 也可以是crt文件 'local_pk' => '磁盤路徑/server.key', 'verify_peer' => false, // 'allow_self_signed' => true, //如果是自簽名證書需要開啟此選項(xiàng) ) ); // 這里設(shè)置的是websocket協(xié)議(端口任意,但是需要保證沒被其它程序占用) $worker = new Worker('websocket://0.0.0.0:443', $context); // 設(shè)置transport開啟ssl,websocket+ssl即wss $worker->transport = 'ssl'; $worker->onMessage = function($con, $msg) { $con->send('ok'); }; Worker::runAll();
通過(guò)以上的代碼,Workerman就監(jiān)聽了wss協(xié)議,客戶端就可以通過(guò)wss協(xié)議來(lái)連接workerman實(shí)現(xiàn)安全即時(shí)通訊了。
測(cè)試
打開chrome瀏覽器,按F12打開調(diào)試控制臺(tái),在Console一欄輸入(或者把下面代碼放入到html頁(yè)面用js運(yùn)行)
// 證書是會(huì)檢查域名的,請(qǐng)使用域名連接 ws = new WebSocket("wss://域名"); ws.onopen = function() { alert("連接成功"); ws.send('tom'); alert("給服務(wù)端發(fā)送一個(gè)字符串:tom"); }; ws.onmessage = function(e) { alert("收到服務(wù)端的消息:" + e.data); };
注意:
1、如果無(wú)法啟動(dòng),則一般是443端口被占用,請(qǐng)改成其它端口,注意改成其它端口后客戶端連接時(shí)需要帶上端口號(hào),客戶端連接時(shí)地址類似wss://domain.com:xxx ,xxx為端口號(hào)。如果必須使用443端口請(qǐng)使用方法二代理的方式實(shí)現(xiàn)wss。
2、wss端口只能通過(guò)wss協(xié)議訪問(wèn),ws無(wú)法訪問(wèn)wss端口。
3、證書一般是與域名綁定的,所以測(cè)試的時(shí)候客戶端請(qǐng)使用域名連接,不要使用ip去連。
4、如果出現(xiàn)無(wú)法訪問(wèn)的情況,請(qǐng)檢查服務(wù)器防火墻。
5、此方法要求PHP版本>=5.6,因?yàn)槲⑿判〕绦蛞髏ls1.2,而PHP5.6以下版本不支持tls1.2。
以上是“workerman配置wss的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。