当前位置: 首页 > 后端技术 > PHP

关于小程序的全套websocket解决方案,Nginx代理wss

时间:2023-03-29 16:04:06 PHP

需要对话和提问。我可以使用ws协议连接本地web上的websockets,但是applets不行。Answer由于小程序使用了SSL加密协议,所以需要wss。这里wss和ws的关系就相当于https和http的关系。问题我用的是宝塔linux,申请ssl很容易,但是不知道怎么配置wss。答案是正确的。PagodaLinux申请SSL非常简单,一键申请,相对https实现起来非常简单。那我们就开始配置吧。但你需要确保以下先决条件。前提条件:你的websocket域名需要申请SSLPagodaLinux(非宝塔其实也可以,不过这里的教程主要针对宝塔Linux)。Nginx代理WSS这一步主要是用来实现wss到ws到http)打开管理后台,点击“网站”->“对应域名”->“配置文件”(我只贴我的域名和ip信息,不重要的信息,不用管)搜索#SSL-END,在这串注释后面加上下面的代码,我已经在图片上加上了,所以肯定和你的不一样#wss协议转发链接到在小程序中访问#访问:wss://xxxx.com/wsslocation/wss{proxy_passhttp://host:8080;#代理到上述地址,proxy_http_version1.1;proxy_set_header升级$http_upgrade;proxy_set_header连接“升级”;}上面的配置我要说清楚,proxy_passhttp://host:8080后面的地址加端口就是你websocket的地址,这里一定要加上端口,比如:http://baidu.com:8080,这是需要手动修改的地方。先不要关闭这个窗口,然后把鼠标移到最上面,也就是在服务器上添加如下代码,同理,我这里已经添加了,所以和你的不一样,以你的为准map$http_upgrade$connection_upgrade{默认升级;''close;}upstreamwebsocket{serverip:8080;#这里可以是多个服务器IP(分多行),可以通过设置权重实现负载均衡}这里需要手动设置,即上游websocket中有一个ip:8080。请将此ip替换为您的IP。哪里可以看到IP?看看你的宝塔左上角的linux。这是正确的。例如:server114.114.114.114:8080至此,Nginx代理wss一切ok。请注意,我使用的socket端口是8080,如果你的端口被占用,请更换。当然,如果改的话请改一系列的小程序。Websocket使用官方文档:https://developers.weixin.qq。...我只是在这里进行连接测试。JustaDemominiWebsocket:function(){wx.connectSocket({url:'wss://host/wss',//这里只需要填写你开始配置的域名,后面请加一个/wss域名。例如:wss://baidu.com/wss})wx.onSocketOpen(function(res){console.log(res)console.log('打开成功')})wx.onSocketMessage(function(res){console.log('收到服务器信息'+JSON.stringify(res))})wx.onSocketOpen(function(res){console.log('WebSocket连接已经打开!')console.log('数据发送')wx.sendSocketMessage({data:'ekeylee'})})}上图是我配置好的小程序的返回信息。如有不明之处,请在文末留言,谢谢