当前位置: 首页 > news >正文

服饰网站模板建设银行附近网站点

服饰网站模板,建设银行附近网站点,广众人才网猎头网站建设,怎么网站改版上期我们完成了游戏大厅的前端部分内容#xff0c;今天我们实现后端部分内容 1. 维护在线用户 在用户登录成功后#xff0c;我们可以维护好用户的websocket会话#xff0c;把用户表示为在线状态#xff0c;方便获取到用户的websocket会话 package org.ting.j20250110_g…上期我们完成了游戏大厅的前端部分内容今天我们实现后端部分内容  1. 维护在线用户 在用户登录成功后我们可以维护好用户的websocket会话把用户表示为在线状态方便获取到用户的websocket会话 package org.ting.j20250110_gobang.game;import org.springframework.stereotype.Component; import org.springframework.web.socket.WebSocketSession;import java.util.HashMap; import java.util.Map;Component public class OnlineUserManager {//使用ConcurrentHashMap保证线程安全private MapInteger, WebSocketSession onlineUser new ConcurrentHashMap();public void enterGameHall(int userId, WebSocketSession session) {//用户上线onlineUser.put(userId, session);}public void exitGameHall(int userId) {//用户下线onlineUser.remove(userId);}public WebSocketSession getFromHall(int userId) {//获取用户的websocket会话return onlineUser.get(userId);} }这里我们借助一个哈希表就可以实现。 2. 实现webSocket相关方法 上期我们定义了webSocket的处理类但是并没有完成重写的方法接下来我们借助维护的在线用户具体实现如下方法 在实现这些方法之前我们还需要按照上期约定好的信息交互形式定义两个实体类代表请求和响应 package org.ting.j20250110_gobang.game;public class MatchRequest {private String message;public String getMessage() {return message;}public void setMessage(String message) {this.message message;} }package org.ting.j20250110_gobang.game;public class MatchResponse {private boolean ok;private String errMsg;private String message;public boolean isOk() {return ok;}public void setOk(boolean ok) {this.ok ok;}public String getErrMsg() {return errMsg;}public void setErrMsg(String errMsg) {this.errMsg errMsg;}public String getMessage() {return message;}public void setMessage(String message) {this.message message;} } 2.1 连接成功 //连接成功后执行Overridepublic void afterConnectionEstablished(WebSocketSession session) throws Exception {//玩家上线try {//获取登录时储存在session中的用户信息这里WebSocketSession在注册时通过拦截器获取到了session中的内容User user (User)session.getAttributes().get(user);if(onlineUser.getFromHall(user.getId()) null) {onlineUser.enterGameHall(user.getId(), session);System.out.println(用户 user.getUsername() 已上线);}else{//防止重复登录MatchResponse response new MatchResponse();response.setOk(false);response.setErrMsg(用户已在别处登录);session.sendMessage(new TextMessage(objectMapper.writeValueAsString(response)));session.close();}}catch (NullPointerException e) {e.printStackTrace();MatchResponse response new MatchResponse();response.setOk(false);response.setErrMsg(用户未登录);session.sendMessage(new TextMessage(objectMapper.writeValueAsString(response)));}} 2.2 连接断开 //连接异常时执行Overridepublic void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {//连接异常断开玩家下线try {User user (User)session.getAttributes().get(user);//防止重复登录时删除正常登录的在线信息if(onlineUser.getFromHall(user.getId()).equals(session)) {onlineUser.exitGameHall(user.getId());System.out.println(用户 user.getUsername() 已下线);}}catch (NullPointerException e) {e.printStackTrace();MatchResponse response new MatchResponse();response.setOk(false);response.setErrMsg(用户未登录);session.sendMessage(new TextMessage(objectMapper.writeValueAsString(response)));}}//连接正常断开后执行Overridepublic void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {//连接正常断开玩家下线try {User user (User)session.getAttributes().get(user);//防止重复登录时删除正常登录的在线信息if(onlineUser.getFromHall(user.getId()).equals(session)) {onlineUser.exitGameHall(user.getId());System.out.println(用户 user.getUsername() 已下线);}}catch (NullPointerException e) {e.printStackTrace();MatchResponse response new MatchResponse();response.setOk(false);response.setErrMsg(用户未登录);session.sendMessage(new TextMessage(objectMapper.writeValueAsString(response)));}} 2.3 处理匹配请求 //接收到请求后执行Overrideprotected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {User user (User) session.getAttributes().get(user);MatchRequest request objectMapper.readValue(message.getPayload(), MatchRequest.class);MatchResponse response new MatchResponse();if(request.getMessage().equals(startMatch)) {//开始匹配把用户加入匹配队列//todoresponse.setOk(true);response.setMessage(startMatch);}else if(request.getMessage().equals(stopMatch)) {//取消匹配从匹配队列中移除用户//todoresponse.setOk(true);response.setMessage(stopMatch);}else{response.setOk(false);response.setErrMsg(非法请求);}} 这里具体的匹配队列功能我们下期再实现
http://www.hkea.cn/news/14406614/

相关文章:

  • 深圳手机网站建设牛商网浪尖设计集团有限公司
  • 如何给一个网站做压测网站打开速度慢跟什么有关系
  • 网站建设智能优化北京网页制作设计单位
  • 阿里云网站建设初衷制作二维码的方法
  • 天津网站制作公司电话室内设计联盟下载
  • 网站开发的功能需求怎么写网站关键词优化排名公司
  • 哪个网站可以做推手建筑工程入门基础知识
  • 免费网站建设apk镇江网页设计哪家好
  • 教育网站制作要多少钱制作充值网站
  • 湖南网站模板建站北京网页设计
  • 单位网站建设的目的网站的服务器打不开
  • 空间设计网站推荐响应式网站模板dede
  • 网站建设的违约责任dedecms小说网站模板下载
  • 网站建设数据库实训体会代理网络游戏
  • 帮别人做网站违法吗wordpress入门使用教程
  • 秘鲁网站后缀wordpress制作vr全景
  • 网站开发时图片加载慢怎么解决网站 攻击
  • 猎上网登陆官方网站创业 建网站
  • 做a图片视频在线观看网站更改wordpress登录图标
  • 京东网站建设费用鸿邑科技 网站建设
  • 二手书交易网站策划书攻击wordpress
  • 百度做网站优化多少钱一年企业 手机网站
  • 松江网站设计崇明建设机械网站
  • 建设一个网站需要什么软件wordpress 换主题
  • 廉江市住房和城乡建设局网站网络推广的工作内容是什么
  • wordpress 页面 背景图厦门网站搜索引擎优化
  • 教你做cpa单页网站哪个网站做摄影师好
  • 门户网站建设招标怎么区别做pc端和手机端网站
  • 怎么把网站放到空间吗网站建设图片设置
  • 建立网站三大基础深圳网站建站建设