swoole就像其官网的口号一样,重新定义了PHP,很是强大,但同样也以文档不全著称,对新手不是很友好,基于在基官网文档的下边有网友说看着这文档想骂人。因为项目需要用到也开始了淌坑之旅,经过一周日以继夜的捣腾,目前算是勉强上手了,但碰到个死活没解决的问题。在经历二天一夜,用尽各种方法,搜遍国内外文档,没解决之后,愤而转用workerman,把锅甩给了swoole。转用workerman也碰到同样的问题时,我开始怀疑我的人生,怀疑我是不是与wss无缘。沮丧之际,Firefox浏览器控制台上的一个提示标记提醒了我,才突然醒悟——发现是低级错误,特分享出来,大家别再踩我中过的雷!
现况和问题:
ws普通版websocket服务端已部署,通过client.htm客户端连接无误;
wss加密版websocket服务端启用后,通过client.htm客户端连接一直报错;
(可恶的)Chrome浏览器一报错为:
WebSocket connection to 'wss://111.111.111.111:9501/' failed: Error in connection establishment: net::ERR_INSECURE_RESPONSE
(anonymous) @ client.html:23
client.html:49 Error occured: undefined
client.html:39 Disconnected
环境:
php7、swoole
解决方法:
因为平常用Chrome调试,但可恶的Chrome并没有给出直接原因,由于开窗口太多,我无意打开了Firefox浏览器,并顺带测试了一下,却让我眼前一亮,突然醒悟过来,发现问题之所在了。
Firefox的直接提示为:
Firefox 无法建立到 wss://112.124.23.149:9501/ 服务器的连接。
但切换到网络面板后发现如图提示:
360截图20170630103356527.jpg
点击后提示头文件信息:
360截图20170630103454599.jpg
至此幡然醒悟!
由于之前成功调试时用的是非加密的ws方式websocket,所以在客户端用形如wss://111.111.111.111:9501/的连接地址是没有任何部题的;
而之后用的是加密的wss方式,因此问题就来了,这个证书是我以某个域名的形式申请下来的,所以也要用此域名来作为服务器的请求地址才行,把客户端的连接地址改为wss://xxx.xxx.com:9501/后即解决问题。
被坑哭了……