目录
SignalR简介
咱先来百度一下SignalR是什么东西:
ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。------百度百科
我们可以看一下关键的一句说明 当所连接的客户端变得可用时服务器代码可以立即向其推送内容 也就是能够实现服务端到客户端的实时通信。这是实现扫码登陆的重要过程,SignalR 封装了 webSockets、foreverFrame、serverSentEvents、longPolling四种主要的传输协议。可以根据客户端支持的情况进行自动切换,也可以指定使用某种模式!
框架
完整的流程
画一个完整的流程框架,支持分布式服务器架设:
上边是一个完整的扫码登陆流程:
step1:客户端与服务端建立连接注册事件,并申请一个二维码(包含一个UUID)
step2:服务端收到注册请求后,生成一个UUID,返回给客户端,由客户端生成二维码,也可以在服务端生成二维码再给客户端。然后开始监听UUID在数据库中的变化,这里我用的是Oracle数据库,所以使用 OracleDependency 进行监听,其他数据库也支持,可以自行搜索一下
step3、4:移动端扫码读取客户端上二维码的信息,并把UUID和当前登录的用户信息通过APIServer存入DB
step5:服务端监听到数据变更,抓取UUID对应的用户信息
step6:服务端使用SignalR将用户信息推送给客户端完成登录
简化流程
为了方便讲解扫码登录的主要流程和代码脱离数据库运行,我们来画一个简化的流程:
我们把APIServer和AP集成在同一个服务器中,省略了对DB的写入和监听,把我们的精力放在使用SignalR实现扫码登录上
相关文章
[C#]SignalR实现扫码登录(B/S,C/S)(一)——服务端搭建
[C#]SignalR实现扫码登录(B/S,C/S)(二)——客户端搭建(Web版)
[C#]SignalR实现扫码登录(B/S,C/S)(三)——客户端搭建(WinForm版)
[GitHub][C#]SignalR实现扫码登录(B/S,C/S)源码