一、登录过程
- 项目使用Maven 搭建的springMVC
- Controller 响应(login、loginError、loginSuccess)页面请求,返回对应的
- Controller 响应login.do 进行登陆验证,参数包含userId、userPassword(登录类型、客户端类型等)
成功: 直接跳转到控制界面(或者通过loginSuccess 页面过度一下),同时需要把相关信息保存在客户端
失败:跳转到loginError 页面,然后重新定向到login 页面
注:jsp 页面放在webInfo下,js和CSS 直接暴露
二、消息推送
- 使用了comet 4j
- 客户端控制界面加载完成后,启动comet 的start()方法
- 服务器端的comet 的connect监听到客户端的第一次连接,用状态频道向客户端推送一条连接成功的状态信息
- 客户端通过状态频道接收到连接成功标志信息,向服务器端发起绑定请求,该请求至少需要携带客户端id和连接id
- 服务器端接收到绑定请求,把两个id以及相应信息存入到客户端连接信息列表中
- 当服务器端需要推送消息时,在客户端连接信息列表中,根据客户端id查找连接id,然后根据连接id 推送消息
- 客户端监听控制指令频道,随时接受消息并做出响应
注1:关于连接途中网络错误问题(或者客户端通过drop断开连接),客户端comet 的stop 会立即得到响应,服务器端则需要在轮询的间隔时间到后,服务器端drop会监听到并作出相关操作
注2:每次轮询过程都是死亡复活,服务器端同样可以监听到,如有必要可以作为心跳使用
注3:在连接中,如果客户的控制权限丧失或其他情况,同样可以通过状态频道通知客户端,客户端收到后做出断开连接等操作(控制设定为必须单人操作)
三、页面的动态加载
- 根据客户端保存的参数,依据类型为每个页面加载不同的js文件,然后该js文件执行动态页面生成(或者在一个js文件使用数组保存页面数据,如此不需要多次请求js文件,但也有一点点麻烦)
- 为了方便以及更好的效果测试,在jsp的原始文件中添加模板,模板初设为隐藏,jQuery 使用克隆的方法,克隆组件,再使用不同的类型参数修改设置控件,最后显示控件
四、传输加密
暂时未定