創(chuàng)建wss服務(wù)
方案一 使用nginx代理(推薦)
推薦使用nginx代理來實(shí)現(xiàn)wss,參考workerman手冊創(chuàng)建wss服務(wù)
方案二 配置Gateway(不推薦)
準(zhǔn)備工作:
1、Workerman版本不小于3.3.7
2、PHP安裝了openssl擴(kuò)展
3、已經(jīng)申請了證書(pem/crt文件及key文件)放在磁盤某個(gè)目錄(位置任意)
start_gateway.php中設(shè)置以下代碼。
// 證書最好是申請的證書
$context = array(
// 更多ssl選項(xiàng)請參考手冊 https://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)
)
);
// websocket協(xié)議(端口任意,只要沒有被其它程序占用就行)
$gateway = new Gateway("websocket://0.0.0.0:443", $context);
// 開啟SSL,websocket+SSL 即wss
$gateway->transport = 'ssl';
注意:
1、如果無法啟動(dòng),則一般是443端口被占用,請改成其它端口。如果必須使用443端口請參考workerman手冊創(chuàng)建wss服務(wù)方法二部分。
2、wss端口只能通過wss協(xié)議訪問,ws無法訪問wss端口。
3、證書一般是與域名綁定的,所以測試的時(shí)候請使用證書對應(yīng)的域名去連接,不要使用其它域名或者ip去連。
4、如果出現(xiàn)無法訪問的情況,請檢查服務(wù)器防火墻。
5、此方法要求PHP版本>=5.6,因?yàn)槲⑿判〕绦蛞髏ls1.2,而PHP5.6以下版本不支持tls1.2。
更多wss相關(guān)信息參考workerman手冊創(chuàng)建wss服務(wù)