workerman-chat 部署在https 环境下 配置 wss 问题

汤飞羽
2023-12-01

直接说我自己遇到的情况吧,

之前 workerman-chat  一直部署在 http 环境下,因为需要内嵌包到微信小程序,域名调整为 https

那么问题来了,  https 是不加载  http 的资源的,ws 的志愿同样也是不能使用.

我的环境是  nginx   网站已经配置好ssl 了,这里就不介绍  ssl 配置了,下面就直接以workerman-chat 的demo来讲吧

 解决办法 大概  2步:

1.nginx配置:新增

目的是将 wss 转发到  http://127.0.0.1:7272

    	location /wss {
        proxy_pass http://127.0.0.1:7272;
        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
    }

2.修好 web/index.php   Websocket配置信息

一定记得 后面加  域名后面加/wss   像下面这样

将 ws = new WebSocket("ws://ss.sss.com:7272");   

修改为:

ws = new WebSocket("wss://ss.sss.com/wss");    //修改这个地址

        // 如果浏览器不支持websocket,会使用这个flash自动模拟websocket协议,此过程对开发者透明
        WEB_SOCKET_SWF_LOCATION = "/swf/WebSocketMain.swf";
        // 开启flash的websocket debug
        WEB_SOCKET_DEBUG = true;
        var ws, name, client_list = {};
        // 连接服务端
        function connect() {
            // 创建websocket
            ws = new WebSocket("wss://你的域名/wss");    
            // 当socket连接打开时,输入用户名
            ws.onopen = onopen;
            // 当有消息时根据消息类型显示不同信息
            ws.onmessage = onmessage;
            ws.onclose = function() {
                console.log("连接关闭,定时重连");
                connect();
            };
            ws.onerror = function() {
                console.log("出现错误");
            };
        }

 

 

 

 

 

 类似资料: