因为之前的项目使用过workerman,所以对这个也有一些了解,现在的项目需要在微信小程序中实现在在线聊天,所以继续采用这个框架
所以需要在workerman项目中配置wss,配置wss有两种方法
直接在workerman中配置即可,443端口必须是未被占用状态,否则就只能用第二种方法了,这个比较简单,这里贴一下代码,就不过多的说了
第二种就是443端口被占用,使用nginx/apache (博主使用nginx,下面就都用nginx来说吧)做一下wss的代理,因为博主服务器中有其他项目,也是使用的https连接,所以443端口被nginx占用,不能采用第一种方法,先说一下现在服务器配置,阿里云服务器使用centos7.4系统,环境使用宝塔面板安装的nginx+php7.2+mysql。下面直接说如何改动了,首先是更改nginx配置,直接贴配置代码,监听443端口 访问域名/wss的时候,转发给workerman 这里就是当前服务器的8282端口
server { listen 443; ssl on; ssl_certificate /www/wwwroot/GatewayWorker/ssl/server.pem; ssl_certificate_key /www/wwwroot/GatewayWorker/ssl/server.key; ssl_session_timeout 5m; ssl_session_cache shared:SSL:10m; ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; location /wss { proxy_pass http://127.0.0.1:8282; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header X-Real-IP $remote_addr; } # location / {} 站点的其它配置...
这里改完以后,官方没有说明要更改workerman里面的配置,但是如果不更改是连接不上的,就是把原来的tcp连接,改成websocket连接即可
使用如下代码,连接检查即可
// 证书是会检查域名的,请使用域名连接 ws = new WebSocket("wss://域名/wss"); ws.onopen = function() { alert("连接成功"); ws.send('tom'); alert("给服务端发送一个字符串:tom"); }; ws.onmessage = function(e) { alert("收到服务端的消息:" + e.data); };
到这里就配置完成了,如果有不明白的欢迎联系博主讨论
上一篇: 阿里云CentOS服务器挂载数据盘...
下一篇: 记录一个php导出csv方法...