NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
# Wss和端口 > 你可以使用默认的端口,同样也可以自定义服务器端口,新手建议默认,非新手建议自定义端口,如果出现问题请还原默认配置 ### 配置wss 服务 > 接之前所讲到 IM二级域名 > 理论上开启wss应该直接修改 start\_gateway.php 23-37 行 即可, > 但 wss 和 https 都需要使用443端口,且很多小伙伴只有一台服务,我们提供最佳解决方案:默认使用ws协议,采用nginx反向代理让ws 支持 wss 以下三种wss方案选其一: ### 1. 有单台服务器,通过 wss://chat.wanlshop.com 反向代理 <http://123.123.123.123:7272> 后面没有端口号直接使用(Nginx推荐) > 需要新建一个站点,并绑定SSL证书,修改站点配置文件,以宝塔为例 ![](https://img.kancloud.cn/7d/46/7d4639ec97e4da8642b3917f937c31c1_1294x711.png) ![](https://img.kancloud.cn/14/00/1400010d5a0b0c6679dc483ab289d5c5_1307x695.png) - **Nginx反向代理** ![](https://img.kancloud.cn/63/f4/63f40a361f1f85cbe55b67dfe7b64d5e_1310x694.png) 我们这里为你提供了一个对比图,和修改后的源码,你可以参考下 ![](https://img.kancloud.cn/ac/b6/acb6245bbe09e5ee7b818868fac37ad2_1586x672.png) 修改后源码 ``` <pre class="calibre23">``` server { listen 80; listen 443 ssl http2; server_name chat.wanlshop.com; location / { proxy_pass http://47.111.117.35:7272; #代理到上面的地址去,格式:http://域名:端口号, proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_connect_timeout 5s; #配置点1 proxy_read_timeout 60000s; #配置点2,如果没效,可以考虑这个时间配置长一点 proxy_send_timeout 60000s; #配置点3 } #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; #HTTP_TO_HTTPS_START if ($server_port !~ 443){ rewrite ^(/.*)$ https://$host$1 permanent; } #HTTP_TO_HTTPS_END ssl_certificate /www/server/panel/vhost/cert/chat.wanlshop.com/fullchain.pem; ssl_certificate_key /www/server/panel/vhost/cert/chat.wanlshop.com/privkey.pem; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; error_page 497 https://$host$request_uri; #SSL-END #ERROR-PAGE-START 错误页配置,可以注释、删除或修改 #error_page 404 /404.html; #error_page 502 /502.html; #ERROR-PAGE-END #禁止访问的文件或目录 location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; } access_log /dev/null; error_log /www/wwwlogs/chat.wanlshop.com.error.log; } ``` ``` ### 2. 独立部署即时通讯,可以直接使用433端口wss(不推荐) 打开文件路径`addons\wanlshop\library\command`目录下的`Chat.php`文件中的 87-116行,按照以下修改即可 ``` <pre class="calibre23">``` // wss服务证书 $context = array( 'ssl' => array( // 请使用绝对路径 'local_cert' => '/www/wwwroot/wanlshop/addons/wanlshop/library/GatewayWorker/ssl/chat.pem', // 也可以是crt文件 'local_pk' => '/www/wwwroot/wanlshop/addons/wanlshop/library/GatewayWorker/ssl/chat.key', 'verify_peer' => false, // 'allow_self_signed' => true, //如果是自签名证书需要开启此选项 ) ); // websocket协议(端口任意,只要没有被其它程序占用就行) $gateway = new Gateway("websocket://0.0.0.0:443", $context); // $gateway = new Gateway("websocket://0.0.0.0:7272"); // 开启SSL,websocket+SSL 即wss $gateway->transport = 'ssl'; // gateway名称,status方便查看 $gateway->name = 'WanlGateway'; // gateway进程数 $gateway->count = 4; // 本机ip,分布式部署时使用内网ip $gateway->lanIp = '127.0.0.1'; // 内部通讯起始端口,假如$gateway->count=4,起始端口为4000 // 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口 $gateway->startPort = 2900; // 服务注册地址 $gateway->registerAddress = '127.0.0.1:1238'; // 心跳间隔 $gateway->pingInterval = 10; // 心跳数据 $gateway->pingData = '{"type":"ping"}'; ``` ``` - 将域名`chat.xxx.com`解析到此服务器上,重启IM(重启方式上章有讲)WSS IM就部署完成了 - 在`多用户商城后台 > 生成客户端 > 客户端配置 > IM服务器`填写`wss://chat.xxx.com`即可 ![](https://img.kancloud.cn/60/08/600864c62c8ab9c79e729e35b6261073_1469x812.png) ### 3. 不使用独立服务器,且Apache不能反向代理的服务器,启动后直接使用wss+端口号(不推荐) 假设服务器主站域名是[https://www.wanlshop.com](https://www.wanlshop.com/)(必须有SSL证书) 则你可以直接使用 wss://www.wanlshop.com:7272 (注意:使用1、2、反向代理不要添加端口号!!!!wss://www.wanlshop.com) ## 修改端口 ### 修改服务端口,即ws连接端口 > 将**7272**端口号修改成你自己即可,除数字外不要修改任何字符,如果是独立服务器部署且使用wss请修改为443端口 1. 打开文件路径`addons\wanlshop\library\command`目录下的`Chat.php`文件第99行 ``` <pre class="calibre23">``` $gateway = new Gateway("websocket://0.0.0.0:7272"); ``` ``` ### 修改register服务端口 > 将1238修改成你自己即可,除数字外不要修改任何字符,修改时以下3项必须修改成相同的 1. 打开文件路径`addons\wanlshop\library\command`目录下的`Chat.php`文件 第81行 ``` <pre class="calibre23">``` new Register('text://0.0.0.0:1238'); ``` ``` 第112行 ``` <pre class="calibre23">``` $gateway->registerAddress = '127.0.0.1:1238'; ``` ``` 第129行 ``` <pre class="calibre23">``` $worker->registerAddress = '127.0.0.1:1238'; ``` ``` 1. 打开文件路径`addons/wanlshop/library/WanlChat`修改目录下的`GatewayClient.php`文件 第39行 ``` <pre class="calibre23">``` public static $registerAddress = '127.0.0.1:1238'; ``` ``` 1. 打开文件路径`addons/wanlshop/library/WanlChat`修改目录下的`WanlChat.php`文件 第27行 ``` <pre class="calibre30">``` GatewayClient::$registerAddress = '127.0.0.1:1238'; ``` ```