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的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

Dreamweaver CS6
視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。