按照Gatewayworker ssl證書配置的代碼設(shè)置的使用阿里云申請(qǐng)的免費(fèi)證書,并且也將域名解析到了該服務(wù)器,但是前端還是連接不到wss,如下圖所示,端口也開放了。
是我少些了哪些配置嗎
上網(wǎng)找了一下其他人的配置,前端還是連不上,debug模式下有如上圖的提示。
SSL handshake error: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown
var ws = new WebSocket("wss://123.57.156.229:8282"); //建立WebSocket連接
ws.onopen = function (evt) {
var obj = '{"type":"ping"}'
setInterval(()=>{
ws.send(obj)
},50000)
// layer.msg('服務(wù)器連接成功,可同步取消線上任務(wù)~',{shade:0.1,icon:1,time:1000});
};
這是客戶端的代碼,就是簡(jiǎn)單的new WebSocket
訪問的域名和證書不匹配。
比如證書是abc.com
的,但是客戶端用的是 bcd.com
去連接。
連接的時(shí)候不能用ip,手冊(cè)有強(qiáng)調(diào)。
我的網(wǎng)頁網(wǎng)址是https://helper.608631.com,websocket配置的地址是socket.608631.com,我是否應(yīng)該在網(wǎng)頁使用new WebSocket("wss://socket.608631.com"),然后在服務(wù)器端設(shè)置nginx代理或者Apache代理,將域名再代理到127.0.0.1:8282這個(gè)端口上啊
nginx代理wss和gatewayWorker設(shè)置wss兩種方案只能選一種。
如果你gatewayWorker設(shè)置了wss并且證書對(duì)應(yīng)的域名是helper.608631.com,端口是442,客戶端直接連 wss://helper.608631.com:442 就行了。就不用連nginx或者apache代理了。
反過來如果要用nginx代理的話,gatewayWorker 不能設(shè)置wss。
是不是我的gatewaywork根目錄放的不對(duì),應(yīng)該把整個(gè)gatewayworker的根目錄放到thinkphp的public目錄下啊
問題解決了嗎?
我也遇到了相同的問題。是按照文檔上的第二種方法來做的,使用 nginx 代理,修改 nginx 下的 conf 文件后,使用 wss 訪問報(bào)錯(cuò),使用 ws 是沒問題的。