学会计算机编程可以做网站吗,wordpress输入xml,如何自己创造一个网站平台,网页游戏 手机1.处理实时通信#xff0c;几种方案
1#xff1a;当一个用户发送一条需要实时更新的信息#xff0c;我可以直接查找在线用户#xff0c;通过在线用户来进行判断条件#xff0c;发送更新请求
2#xff1a;用户在一个需要实时更新的界面时#xff0c;就不断的向服务端发…1.处理实时通信几种方案
1当一个用户发送一条需要实时更新的信息我可以直接查找在线用户通过在线用户来进行判断条件发送更新请求
2用户在一个需要实时更新的界面时就不断的向服务端发送请求然后服务端读取数据库返回对应的信息然后客户端对其界面进行更新这里发送请求的的时间间隔比较不好掌握
3用户在一个需要实时更新的界面时就像服务端发送一个请求服务端接受到请求并不做任何处理当某个变量变化时服务端返回一个更新信息,当然这需要一个线程监听一个变量是否改变。 总结其实三种方案都差不多第二种第三种就收发请求没有那末频繁但是第三种一直监听一个变量是否变化 而第一种和第三种其实也类似的只不过的是第一种在服务端直接把更新请求发给了客户端然后由客户端来判断 客户是否在这个界面这个界面是否需要更新第三就是判断需要更新的才发请求。这个请求在服务端种监听一个变量 这个变量的更改又是由其它用户更新信息所造成所以其实三种都差不多。 比如学习通服务端处理签到要实时更新 MySignIn mySignIn (MySignIn) requestMessage.getData();mySignIn.setId(MySignInDAO.addMySignIn(mySignIn));//得到班级的idint myClassId mySignIn.getMyClass_id();//首先更新用户自己的ui界面Message responseMessage new Message();responseMessage.setData(mySignIn);responseMessage.setMessageType(MessageType.tea_send_sign_in_success);SocketUtil.getSocketUtil().sendMessage(socket, responseMessage);//循环进行更新在线用户的界面// 获取每个键对应的值for (Integer userId : onlineUsers.keySet()) {Student student1 StudentDAO.queryStudent(userId);if (student1 ! null) {//找到该用户学生信息//判断学生是否是在班级里if(MyClass_addtion_studentDAO.queryMyclass(student1.getId(),myClassId)){//该学生在班级里可以进行操作// 进行更新界面Socket userSocket onlineUsers.get(userId);Message responseMessage2 new Message();responseMessage2.setData(mySignIn);//默认没有进行签到mySignIn.setIsSignIn(1);responseMessage2.setMessageType(MessageType.stu_need_update_sign_in);//客户端获取到签到信息应该要判断是否在班级界面在班级界面是否是需要更新的对应班级SocketUtil.getSocketUtil().sendMessage(userSocket, responseMessage2);}else{//学生不在班级里continue;}}else{//说明在线用户不是学生continue;}//进行查询所有的关系是否在这个班级里然后返回服务端如果服务端的Controller为空就不更新} 通过服务端发送信息进行处理是否需要更新ui界面。这里使用的第一种方法 2.时间类型对应数据库datebase 签到的发起和结束时间类型
private LocalDateTime start_time;
private LocalDateTime end_time; public static ListMySignIn queryMySignInList(int ClassId){Connection connection null;PreparedStatement preparedStatement null;ResultSet resultSet null;ListMySignIn mySignInList new ArrayList();try {//获取数据库连接connection JDBCUtil.getJdbcUtil().getConnection();//准备数据库语句String sql select * from signs where sign_class_id ? ;preparedStatement connection.prepareStatement(sql);preparedStatement.setInt(1,ClassId);resultSet preparedStatement.executeQuery();while(resultSet.next()) {MySignIn mySignIn new MySignIn();mySignIn.setId(resultSet.getInt(1));mySignIn.setMyClass_id(resultSet.getInt(2));mySignIn.setSignIn_code(resultSet.getString(3));mySignIn.setStart_time((LocalDateTime) resultSet.getObject(4));mySignIn.setEnd_time((LocalDateTime) resultSet.getObject(5));mySignInList.add(mySignIn);}} catch (Exception e) {e.printStackTrace();}finally {JDBCUtil.getJdbcUtil().closeConnection(resultSet,preparedStatement,connection);}return mySignInList;}