http://doc2.workerman.net/
总结一下去年的某个项目遇到的问题,记录的有些晚了,还好当时有记录,跟大家分享一下遇到的问题。
这个项目使用ThinkPHP5搭建GatewayWorker客服聊天遇到信息不能同步的问题。
第一步:先确定网站使用的是TLS1.2协议
第二步:由于这个网站是微信公众号里的网页,网站协议是HTTPS,因为 https必须使用wss连接websocket,所以先升级ws协议为wss协议。(查看手册)
第三步:查看GatewayWorker的workerman版本是否符合,因为我这里的workermanb版本低于3.3.7,所以这里我选择了通过nginx代理(具体配置信息可参考手册【http://doc.workerman.net/faq/secure-websocket-server.html】)
这里贴上我的配置
location /chat {
proxy_pass http://wss_svr;
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_connect_timeout 4s;
proxy_read_timeout 60s;
proxy_send_timeout 12s;
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 1M;
proxy_busy_buffers_size 2M;
proxy_max_temp_file_size 0;
}
location / {
proxy_redirect off;
#proxy_pass http://wss_svr;
proxy_set_header Host $host;
proxy_set_header X-Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
try_files $uri $uri/ /?$args;
}
第四步:配置好之后 把ws协议换成wss协议还是有问题 连接不上websocket…于是然后把GatewayWorker升级了一遍 还是有问题
然后把vendor/GatewayWorker/Applications移动到根目录,连接正常 。
结果还没完…时而连接上时而连不上 连消息也丢失严重,心态崩了…
第五步:把所需的端口都开放 防火墙也开放所有需要的端口 …
无果…
最后安装上php的sockets 扩展,成功!后续如果并发高 可安装上event扩展。
可在控制台打开任意页面,
var wss = new WebSocket (‘wss://192.168.213.182:443’);
如果不报错,提示undefined就是连接成功啦。
或去在线测试网站测试是否连接上Websocket.