背景
小程序端要求使用wss且不能带端口,因此虽然搭建完websocket,并能在app端运行,但还不能在小程序端运行,需要在后端创建wss。
1准备工作
本章内容参考《wokerman手册》常见问题-创建wss服务、《GatewayWoker手册》常见问题-创建wss服务。
手册提供了一种简单的开启wss服务的方法:直接用GatewayWoker开启SSL。但用这种方法,在前端连接websocket时的url会带端口,小程序并不支持。
因此需要使用《wokerman手册》提出的另一种方法:利用nginx/apache代理wss。
使用这种服务器代理wss的方法,则不能使用前面直接用GatewayWoker开启SSL方法。
本人的服务器是apache。
1.1启用 proxy_wstunnel_module 模块(httpd.conf)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
1.2配置SSL及代理
#extra/httpd-ssl.conf
DocumentRoot "/网站/目录"
ServerName 域名
# Proxy Config
SSLProxyEngine on
ProxyRequests Off
ProxyPass /wss ws://127.0.0.1:8282/wss
ProxyPassReverse /wss ws://127.0.0.1:8282/wss
# 添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol all -SSLv2 -SSLv3
# 修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
# 证书公钥配置
SSLCertificateFile /server/httpd/cert/your.pem
# 证书私钥配置
SSLCertificateKeyFile /server/httpd/cert/your.key
# 证书链配置,
SSLCertificateChainFile /server/httpd/cert/chain.pem
如果已经创建了https,那么应该只添加这几行代码:
# Proxy Config
SSLProxyEngine on
ProxyRequests Off
ProxyPass /wss ws://127.0.0.1:8282/wss
ProxyPassReverse /wss ws://127.0.0.1:8282/wss
重启服务器。
1.3测试
在Chrome浏览器中按F12,在Console中测试。
注意:url不能使用ip地址了,应使用创建https的那个域名。
// 证书是会检查域名的,请使用域名连接
ws = new WebSocket("wss://域名/wss");
ws.onopen = function() {
alert("连接成功");
ws.send('tom');
alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
alert("收到服务端的消息:" + e.data);
};
1.4小程序开发设置
最后还要在小程序后台,把wss://域名添加到服务器域名中即可。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiaosuom/article/details/111246228