二维码扫描后更改
鉴于昨天做的基于Websocket的消息推送,显然前台的二维码扫描后更改需要用Websocket做,原因很简单:被扫终端正常来讲不知道啥时候要变,变成啥。
二维码的生成组件用的angular2-qrcode,语法很独特,大概是这样的:
<qr-code [value]="'All QR Code data goes here!'" [size]="150"></qr-code>
这就让人很难理解我的value值应该怎么设置动态,查它的issue,好在在issue#10中有阐释:
<qr-code [data]="textEncode" [size]="250" [type]="8"></qr-code>
意思是只要将双向绑定的变量放到这个域里就可以了,OK。
在业务组件类里如下设置:
this.ngws = new SimpleNgWebSocket('ws://192.168.1.240:80');
this.ngws.on('message', (msg) => {
this.qrcode = msg.data;
});
this.ngws.send('hi');
意思是打开相应组件时通过Websocket向服务器请求第一个验证码内容。
服务器端逻辑:
me.sendCmd('http://192.168.1.240/login/:1', '1');
收到申请消息后回复第一个验证码内容。内容是一个路由,然后在这个处理路由中设置逻辑:
WSRouter.sendMsg('http://192.168.1.240/login/:' + (count++));
res.json("login root");
这里是将参数加一后返回,这样前台二维码就变成了相同路由,参数加一的图案,循环如斯。