一、简述
wss协议实际是websocket+SSL,就是在websocket协议上加入SSL层,类似https(http+SSL)。所以只需要在websocket协议的基础上开启SSL即可支持wss协议。
二、通讯原理及流程
1、客户端发起wss连接连到apache。
2、nginx/apache将wss协议的数据转换成ws协议数据并转发到Workerman的websocket协议端口。
3、Workerman收到数据后做业务逻辑处理。
4、Workerman给客户端发送消息时,则是相反的过程,数据经过apache转换成wss协议然后发给客户端。
三、配置Apache1、启用模块
在httpd.conf配置文件里找到以下两行并去掉前面的“#”注释号
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
2、配置SSL及代理
在extra/httpd-ssl.conf配置文件里配置站点+SSL证书+代理,参考代码如下:
PRETTYPRINTwww.hilo8.com
- <VirtualHost *:443>
- DocumentRoot "C:\wwwroot\website"
- ServerName www.hilo8.com
- # 代理配置
- SSLProxyEngine on
- ProxyRequests Off
- ProxyPass /wss ws://127.0.0.1:2345/wss
- ProxyPassReverse /wss ws://127.0.0.1:2345/wss
- # 添加 SSL 协议支持协议,去掉不安全的协议
- SSLProtocol all -SSLv2 -SSLv3
- SSLEngine on
- SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
- SSLCertificateFile "${SRVROOT}/ssl/domain.crt"
- SSLCertificateKeyFile "${SRVROOT}/ssl/domain.key"
- SSLCertificateChainFile "${SRVROOT}/ssl/chain_ca.crt"
- <Directory "C:\wwwroot\website">
- SSLOptions +StdEnvVars
- AllowOverride All
- Require all granted
- </Directory>
- </VirtualHost>
四、客户端连接测试
LANG-JSwww.hilo8.com
- // 证书是会检查域名的,请使用域名连接。注意没有端口
- ws = new WebSocket("wss://域名.com/wss");
- ws.onopen = function() {
- alert("连接成功");
- ws.send('tom');
- alert("给服务端发送一个字符串:tom");
- };
- ws.onmessage = function(e) {
- alert("收到服务端的消息:" + e.data);
- };
参考来源:https://www.workerman.net/doc/workerman/faq/secure-websocket-server.html
上一篇:php pdo 对数据库表的操作,包括创建表、删除表、添加新字段名、修改字段名
讨论数量:0