当前位置: 首页>业内资讯>客服技术

如何在workernam或gatewayworker中启用WSS 服务

        在你的网站布署了https后,如果你想使用websocket服务通信,你就会发现由于服务器端还是使用的http协议,而你浏览器端又使用的是https协议,这样就会造成浏览拒绝响应服务器。

        报错内容如下:

        

       如果你需要继续使用wss,那就只能按下面两种方法开通了

    第一种方法

        ①. 下载SSL 证书
        首先要知道的是:证书一般是与域名绑定的
        对于获得 SSL 证书的方式可能有所不同,以我为例:
        我在阿里云下载了证书(pem/crt 文件及 key文件)放在【gatewayWorker 服务器】的磁盘目录

        

        ②. 然后修改了【gatewayWorker 服务器】中的 start_gateway.php文件,以支持 WSS 服务
            同时,我选用的并非手册推荐的【443】端口,而是 【8283】

        

        

  • ③. 解析域名
    首先,手册中提到的这句 : 【证书一般是与域名绑定的,所以测试的时候客户端请使用域名连接,不要使用 ip 去连】
    那么,必然用到了域名解析的操作
    此处,我在前面证书所对应的域名下,补充了对 【gatewayWorke 服务器】的解析绑定 【极其重要】


        ④. 客户端连接测试

            如此一来,客户端的连接代码为:var ws = new WebSocket("wss://mozxx.fetow.com:8283");
        

     第二种方式、 利用 nginx 代理 wss

        ①. 首先就是对 【gatewayWorker 服务器】中 start_gateway.php文件的处理
            为了对比,此处鄙人设置的是端口【8284】

            如果你是用了下载的压缩包,此处其实也就只是改了一下端口号 (建议跟第一种方式的操作代码进行对比研究)

    

        ②. 安装并进行 Nginx 网站的配置操作

            因为鄙人使用的是 【宝塔(Linux) 面板管理系统】,操作起来要方便一点

            首先便是创建站点 (其中添加的域名来源,便是第一种方式中提及的 【步骤 ③. 解析域名】)




            然后,便是 SSL 证书的配置
(图示为使用【宝塔管理系统】的界面,只是为了方便操作,根据手册上的介绍也可以实现,毕竟目的是一样的)
        

最后,便是在配置文件中,补充一个 wss 的代理入口 (鄙人定的入口为 "moz_wss")

注意: 一切配置完毕,要重启 Nginx 服务

③. 此方式,要求对端口【443】的开放

如果是 阿里云服务器 ,还需要进行 安全组的设置

④. 客户端连接测试
如此一来,客户端的连接代码为:var ws = new WebSocket("wss://mozxx.fetow.com/moz_wss");

【附录】
每次修改 "start_gateway.php" 文件后,要对 【gatewayWorker 服务器】的 workerman 进行重启操作

【两种方式,都需要进行 域名解析的绑定操作 】

注意,是 对 【gatewayWorker 服务器】IP 的绑定 ,之前因为手册没有提及,一直忘做了这一步

【注意要进行防火墙的设置】

    尤其,如果是 阿里云服务器 ,还需要进行 安全组的设置 (鄙人就是总卡在这里忘记 !!!)

    测试发现,如果配置完成 WSS 服务
    此时不管客户端网络协议为 【http】还是 【https】, 连接方式都为上面的代码,皆可成功连接 !


嘿,我来帮您!

微信公众号