baocai项目客户端连接服务器流程简要
2017-12-22 16:30:35 3 举报
baocai项目客户端连接服务器流程简要
作者其他创作
大纲/内容
通过fetch()发起网络请(http\\https)求读取服务器信息,并存储在全局对象global当中,然后通过getSpeed()方法检测各个服务器的速度。业务转至APP\\WsSupport\\webConnection.js 在APP\\View\\LoginPage.js界面中实例化的对象connectSocketServer connectSocketServer.prototype.getSpeed()
getSpeed()读取全局存储的服务器地址loadData=JSON.parse(Global.roadData),循环检测服务器速度this.getServerDelay()
服务端检测到异常以后,需要强制客户端断线的场景(运行于 实例化APP\\WsSupport\\messageRoute.js的returnResult对象 )
通过componentDidMount()方法执行 this.getUrl() this.getTaskUrl()这两个方法,并准备将读取的服务器地址信息存入全局对象Global当中。
客户端建立websocket连接后,会立执行心跳检测,然后每N分钟执行一次,用意为确保用户只能使用单一客户端登录,避免用户同时从PC、手机APP、手机web同时连接。(运行于 实例化APP\\WsSupport\\webConnection.js的connectSocketServer对象 )
登录页面读取服务器信息之后准备检测服务器速度(运行于 APP\\View\\LoginPage.js)
getSpeed()方法中的for循环理论上同步执行了N次getServerDelay()方法,但是getServerDelay()方法中发起的websocket连接是异步执行,可以理解成同时向N个服务器发起连接请求,最快的服务器会最先响应,客户端就会执行红框里面的代码,存储这个最快的服务器信息,并改变客户端连接状态标识this.connectState 为true,那么较慢的服务器响应后,客户端执行代码的时候this.connectState就已经是true了,所以会执行红框下面的代码,即关闭当前连接
代码截图
客户端被强制断开连接
baocai项目客户端连接服务器流程简要
登录页面click登录(运行于 APP\\View\\LoginPage.js 实例化APP\\WsSupport\\sendParams的sendParams)
代码解读
加载登录页面 读取服务器地址、版本更新信息(运行于 APP\\View\\LoginPage.js)
项目起始检测服务器速度(运行于 APP\\View\\LoginPage.js 实例化APP\\WsSupport\\webConnection.js的connectSocketServer对象返回最快的服务器信息并建立长连接)
Websocket心跳检测
心跳测试是由初始化连接方法 initConnection()启动的,初始化连接方法 initConnection()会在很多地方被执行,并不止限于客户端第一次initWs()连接的时候,连接异常时也会初始化连接,并执行重新选择服务器连接startAutoConnect()
收藏
0 条评论
下一页