您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“Swoole WebSocket怎么開啟SSL支持”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
首先要申請SSL證書,必須為pem格式。
如圖為寶塔環(huán)境所申請Let's Encrypt免費證書的所在位置:
Linux安裝openssl支持:
yum install -y openssl
移到Swoole安裝包目錄,重新編譯安裝,并加入openssl支持:(相關(guān)文章:Linux下源碼包安裝Swoole及基本使用)
phpize ./configure --enable-openssl --with-php-config=/www/server/php/72/bin/php-config make clean make && make install
查看Swoole已經(jīng)開啟openssl支持:
php --ri swoole
Websocket服務(wù)器中開啟SSL隧道,并配置證書路徑:
ws_server.php:
<?php //創(chuàng)建websocket服務(wù)器對象,監(jiān)聽0.0.0.0:9501端口,開啟SSL隧道 $ws = new swoole_websocket_server("0.0.0.0", 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP | SWOOLE_SSL); //配置參數(shù) $ws ->set([ 'daemonize' => false, //守護(hù)進(jìn)程化。 //配置SSL證書和密鑰路徑 'ssl_cert_file' => "/etc/letsencrypt/live/oyhdo.com/fullchain.pem", 'ssl_key_file' => "/etc/letsencrypt/live/oyhdo.com/privkey.pem" ]); //監(jiān)聽WebSocket連接打開事件 $ws->on('open', function ($ws, $request) { echo "client-{$request->fd} is open\n"; }); //監(jiān)聽WebSocket消息事件 $ws->on('message', function ($ws, $frame) { echo "Message: {$frame->data}\n"; $ws->push($frame->fd, "server: {$frame->data}"); }); //監(jiān)聽WebSocket連接關(guān)閉事件 $ws->on('close', function ($ws, $fd) { echo "client-{$fd} is closed\n"; }); $ws->start();
頁面js中即可使用wss連接WebSocket服務(wù)器(使用與證書對應(yīng)的域名):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>WebSocket</title></head><body></body><script type="text/javascript">var websocket = new WebSocket('wss://www.oyhdo.com:9501'); websocket.onopen = function (evt) { onOpen(evt) }; websocket.onclose = function (evt) { onClose(evt) }; websocket.onmessage = function (evt) { onMessage(evt) }; websocket.onerror = function (evt) { onError(evt) }; function onOpen(evt) { console.log("Connected to WebSocket server."); websocket.send('666');} function onClose(evt) { console.log("Disconnected"); }function onMessage(evt) { console.log('Retrieved data from server: ' + evt.data); } function onError(evt) { console.log('Error occured: ' + evt.data); }</script></html>
啟動WebSocket服務(wù):
php ws_server.php
瀏覽器訪問結(jié)果:(注意必須為https訪問)
服務(wù)器監(jiān)聽結(jié)果:
“Swoole WebSocket怎么開啟SSL支持”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。