public function notify($message){ $client = new swoole_client(SWOOLE_SOCK_TCP); if (!$client->connect('127.0.0.1', $this->config['notify_port'], -1)) { return "connect failed. Error: {$client->errCode}\n"; } $ret = $client->send($message); }
通知登录成功
在 WebSocket 服务收到登录成功的通知后,就可以根据需要处理一下用户信息,然后把用户信息传递给客户端的浏览器展示结果,还记得我们刚刚新监听的 TCP 端口吗?就可以在 receive 事件中处理:
$tcp_server->on('receive', function ($serv, $fd, $threadId, $data) { $data = json_decode($data, true); if ($data['type'] == 'scan'){ $serv->push($data['fd'], json_encode([ 'message_type' => 'scan_success', 'user' => $data['nickname'] ])); } $serv->close($fd); });
最后登录的界面:
总结
整个过程并不难,主要的两个难点就是对应连接用户的扫码用户、不同 Server 之间的通信,我们的解决办法就是把连接的文件描述符作为临时二维码场景值(这里也可以采用 Redis 来存储映射关系)、监听新的 TCP 端口来接受通知消息。可以访问 试试看,记得要用电脑打开。
以上所述是小编给大家介绍的基于 Swoole 的微信扫码登录功能实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章: