workerman配置wss的方法

這篇文章主要介紹workerman配置wss的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),巴青企業(yè)網(wǎng)站建設(shè),巴青品牌網(wǎng)站建設(shè),網(wǎng)站定制,巴青網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,巴青網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

Workerman如何創(chuàng)建一個wss服務(wù),使得客戶端可以用過wss協(xié)來連接通訊,比如在微信小程序中連接服務(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)申請了證書(pem/crt文件及key文件)放在磁盤任意目錄

代碼:

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

// 證書最好是申請的證書
$context = array(
    // 更多ssl選項(xiàng)請參考手冊 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, //如果是自簽名證書需要開啟此選項(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();

通過以上的代碼,Workerman就監(jiān)聽了wss協(xié)議,客戶端就可以通過wss協(xié)議來連接workerman實(shí)現(xiàn)安全即時(shí)通訊了。

測試

打開chrome瀏覽器,按F12打開調(diào)試控制臺,在Console一欄輸入(或者把下面代碼放入到html頁面用js運(yùn)行)

// 證書是會檢查域名的,請使用域名連接
ws = new WebSocket("wss://域名");
ws.onopen = function() {
    alert("連接成功");
    ws.send('tom');
    alert("給服務(wù)端發(fā)送一個字符串:tom");
};
    ws.onmessage = function(e) {
    alert("收到服務(wù)端的消息:" + e.data);
    };

注意:

1、如果無法啟動,則一般是443端口被占用,請改成其它端口,注意改成其它端口后客戶端連接時(shí)需要帶上端口號,客戶端連接時(shí)地址類似wss://domain.com:xxx ,xxx為端口號。如果必須使用443端口請使用方法二代理的方式實(shí)現(xiàn)wss。

2、wss端口只能通過wss協(xié)議訪問,ws無法訪問wss端口。

3、證書一般是與域名綁定的,所以測試的時(shí)候客戶端請使用域名連接,不要使用ip去連。

4、如果出現(xiàn)無法訪問的情況,請檢查服務(wù)器防火墻。

5、此方法要求PHP版本>=5.6,因?yàn)槲⑿判〕绦蛞髏ls1.2,而PHP5.6以下版本不支持tls1.2。

以上是“workerman配置wss的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)頁標(biāo)題:workerman配置wss的方法
網(wǎng)站URL:http://bm7419.com/article18/jdcegp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站設(shè)計(jì)公司、微信公眾號、品牌網(wǎng)站設(shè)計(jì)面包屑導(dǎo)航、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)