微信小程序 WebSocket 使用非 443 端口连接
时间: 2023-09-17 15:12:03 浏览: 329
是的,微信小程序 WebSocket 支持使用非 443 端口连接。但是需要注意的是,如果你的 WebSocket 服务器不在同一个域名下,需要在小程序的 app.json 文件中配置合法的域名列表。你可以在小程序开发者工具中的项目设置中,添加合法的域名列表。同时,还需要在服务器端设置允许跨域访问。如果你使用的是 HTTPS 协议,还需要使用 SSL 证书来保证连接的安全性。
相关问题
微信小程序使用非 443 端口连接
微信小程序默认情况下只允许使用 80 和 443 端口进行网络请求。如果需要使用其他端口进行连接,需要先在小程序的 app.json 文件中配置合法的域名列表,具体方法如下:
1. 打开小程序开发者工具,找到项目根目录下的 app.json 文件,添加“networkTimeout”字段。
```
"networkTimeout": {
"connectSocket": 10000,
"sendSocketMessage": 10000,
"downloadFile": 10000,
"uploadFile": 10000
},
```
2. 在“networkTimeout”字段中添加一个“websocket”字段,指定 WebSocket 连接的超时时间。
```
"networkTimeout": {
"connectSocket": 10000,
"sendSocketMessage": 10000,
"downloadFile": 10000,
"uploadFile": 10000,
"websocket": 10000
},
```
3. 在“app.json”文件的“networkTimeout”字段下添加一个“request”字段,指定小程序允许请求连接的端口。
```
"networkTimeout": {
"connectSocket": 10000,
"sendSocketMessage": 10000,
"downloadFile": 10000,
"uploadFile": 10000,
"websocket": 10000,
"request": 10000
},
"networking": {
"domainList": [
"example.com:8080"
]
}
```
其中,“networking”字段用于指定小程序允许连接的域名和端口,需要在“domainList”字段中添加需要连接的域名和端口。
需要注意的是,如果使用的是 HTTP 协议,需要在小程序开发者工具中的设置中,将“不校验合法域名、Web-view(业务域名)、TLS 版本以及 HTTPS 证书”设置打开。如果使用的是 HTTPS 协议,则需要在服务器端配置 SSL 证书。
如何配置nginx实现微信小程序wss协议的反向代理,以便在443端口同时支持HTTPS和webSocket服务?
在微信小程序中,wss(WebSocket Secure)协议使用的是443端口,这是SSL/TLS加密的webSocket通信。当需要在同一端口上同时提供HTTPS服务和webSocket服务时,可以通过nginx的反向代理功能来实现。首先需要了解webSocket协议与HTTP协议的关系。webSocket协议是在HTTP协议基础上的升级,客户端发起的HTTP请求中包含了特定的头部字段来请求协议升级。
参考资源链接:[nginx配置反向代理webSocket解决方案](https://wenku.csdn.net/doc/6401acd8cce7214c316ed5b4?spm=1055.2569.3001.10343)
为了配置nginx反向代理webSocket,需要按照以下步骤进行:
1. 确保nginx版本支持`stream`模块,因为`stream`模块是处理TCP代理的关键部分。
2. 修改nginx配置文件(通常是nginx.conf),增加`stream`上下文来处理TCP流量。
3. 在`stream`上下文中定义一个上游服务器组,指定webSocket后端服务的地址和端口。
4. 设置一个监听443端口的服务器,使用SSL来加密流量,并将流量代理到上游服务器组。
以下是配置示例:
```nginx
stream {
upstream websocket_servers {
***:8080;
# 可以添加更多后端服务器
}
server {
listen 443 ssl;
proxy_pass websocket_servers;
# 其他SSL配置...
}
}
```
这里需要注意的是,配置中的`ssl`参数确保了流量的安全性,而且`proxy_pass`指令指向了之前定义的`websocket_servers`。在某些情况下,还需要启用`proxy_protocol`来确保nginx能正确处理原始的IP地址。
完成配置后,重启nginx服务以应用新的配置。这样设置后,nginx就可以处理到达443端口的webSocket请求,将其安全地转发到后端的webSocket服务上,同时允许正常的HTTPS服务继续运行。这种方法不仅解决了微信小程序wss协议端口限制的问题,还保持了服务的高效和安全。
为了更深入理解nginx配置的细节及其工作原理,强烈推荐阅读《nginx配置反向代理webSocket解决方案》这篇文章。它详细介绍了如何配置nginx以处理webSocket协议,并且特别讲解了如何应对微信小程序中遇到的wss协议端口限制问题。通过这篇文章,你将能够获得配置nginx反向代理webSocket的完整知识和实践技巧。
参考资源链接:[nginx配置反向代理webSocket解决方案](https://wenku.csdn.net/doc/6401acd8cce7214c316ed5b4?spm=1055.2569.3001.10343)
阅读全文