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