概述
PHP使用workerman框架的websocket, 实现机器扫码检票, 异步刷新小程序页面的票状态.
首先,需要小程序前端页面使用openid作为标志(代码里是$uid)连接websocketServer
然后, 检票接口做完检票逻辑后, 将结果通过websocketClient推送到小程序页面
最后, 小程序根据接收到的推送消息处理页面
一. 什么是websock?
参考《看完让你彻底搞懂Websocket原理》(https://www.cnblogs.com/fuqiang88/p/5956363.html)
深入浅出地介绍了websock的原理和作用,通俗易懂,膜拜大神。
二. 什么是workerman
实际上Workerman类似一个PHP版本的nginx,核心也是多进程+Epoll+非阻塞IO。Workerman每个进程能维持上万并发连接。由于本身常住内存,不依赖Apache、nginx、php-fpm这些容器,拥有超高的性能。同时支持TCP、UDP、UNIXSOCKET,支持长连接,支持Websocket、HTTP、WSS、HTTPS等通讯协以及各种自定义协议。拥有定时器、异步socket客户端、异步Mysql、异步Redis、异步Http、异步消息队列等众多高性能组件。
官网地址(http://doc.workerman.net/)
三. Nginx配置wss
ubuntu@VM-156-73-ubuntu:/usr/local/nginx/conf/vhost$ more test.com.cn.conf
upstream websocket1{
server localhost:19988;
}
server
{
listen 80;
listen 443;
#listen [::]:80;
server_name test.com.cn ;
index index.html index.htm index.php default.html default.htm default.php;
root /data/www/zc2api.zhongchengbus.com.cn/public;
charset utf-8;
ssl on;
ssl_certificate /usr/local/nginx/conf/cert/1_test.com.cn_bundle.crt;