一、简述
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证书+代理,参考代码如下:
<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>
四、客户端连接测试
// 证书是会检查域名的,请使用域名连接。注意没有端口 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