环境
Linux centos 7.6
宝塔面板
准备
使用https访问协议的域名(aa.bb.com)
通常情况下,浏览器中使用ws://aa.bb.com的方式即可以连接websocket,实现项目中的实时通讯需求,但由于小程序等场景,按要求须使用wss的方式才能来连接websocket服务器。要使用wss,首先需要配置域名使用https协议,其次需要通过apache中的代理功能,开启wss协议的应用,本文重点讲述apache下如何开启代理模块并配置wss协议。
原理
wss协议实际是websocket+SSL,就是在websocket协议上加入SSL层,类似https(http+SSL)。 所以只需要在websocket协议的基础上开启SSL即可支持wss协议。
配置
1.启用 proxy_wstunnel_module 模块,取消注释即可
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
2.配置代理,在443端口下, 127.0.0.1:5800为websocket应用端口
#这块就是最主要的
SSLProxyEngine on
ProxyRequests Off
#服务器+端口号
ProxyPass /wss ws://127.0.0.1:5800/wss
#客户端的域名
ProxyPassReverse /wss ws://127.0.0.1:5800/wss
3. 项目应用
前端代码:
ws = new WebSocket("wss://aa.bb.com/wss");
ws.onopen = function() {
alert("连接成功");
ws.send('tom');
alert("给服务端发送一个字符串:tom");
};
ws.onmessage = function(e) {
alert("收到服务端的消息:" + e.data);
};