本周后端工作仍然是对功能进行测试,并对问题进行修复。
优化登录注册接口,在登录时提示前端登录,在注册时提示注册。
@Override
public CommonResponse handleCodeLogin(long phone, String code){
CommonResponse response = tokenUtil.phoneCodeCheck(phone,code);
if(!response.getLoginValid())
return response;
if(response.getMessage().equals("R")){
User newUser = new User(snowFlake.nextId(), "默认用户名", phone, false, new ArrayList<>());
try{
userRepository.save(newUser);
return CommonResponse.successResponse("注册成功", response);
}catch (Exception r){
return CommonResponse.errorResponse("保存失败", response, r);
}
}else{
return CommonResponse.successResponse("登录成功", response);
}
}
为超时重传机制设置最大重传次数,在到达最大重传次数时,会由服务端主动断开连接
public class AckWaitingThread extends Thread{
private static final Long RESEND_LIMIT = 30L;
WebSocketServer webSocketServer;
String sendContent;
Long resendTime;
AckWaitingThread(WebSocketServer webSocketServer, String sendContent){
this.webSocketServer = webSocketServer;
this.sendContent = sendContent;
resendTime = 0L;
}
public void run(){
try{
while (true){
if(resendTime > RESEND_LIMIT){
webSocketServer.closeConnection();
break;
}
resendTime ++;
webSocketServer.sendMessage(sendContent);
sleep(webSocketServer.ACK_TIMEOUT);
}
}catch (InterruptedException | IOException ignored){}
}
}