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

服饰网站模板wordpress 搞笑网站

服饰网站模板,wordpress 搞笑网站,网站备案修改域名ip,新网站应该怎么做seo上期我们完成了游戏大厅的前端部分内容#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/14328875/

相关文章:

  • 中小型网站建设效果辽宁省建设工程信息网电话
  • 盘龙网站建设自己做的网站维护一年多少钱
  • 兰州网站制作成都中山网站建设策划方案
  • 设计网站首页景德镇市建设局建设信用网站
  • 源码购买网站外汇网站建设
  • 怎么怎么做网站小猪导航
  • 网站建设 工作室怎么在自己的网站做淘宝客
  • 做网站参考线怎么拉wordpress标签生成图片不显示
  • 婚庆网站建设的需求分析个人做多个网站备案
  • 申请自己的网站做政协网站的目的是什么
  • 如何提高网站的收录率和收录量怎么把网站做火
  • 免费网站提供网站被黑应该怎么做
  • 石家庄网站建设seo优化营销wordpress自定义目录
  • 那个网站专门做婚纱相册查网址是否安全
  • 东莞网站建设提供商简单网页模板免费下载
  • 湖州网站seo网站的title
  • 民权网站建设高古楼网站 做窗子
  • 徐州网站制作古典水墨网站
  • 查看网站是否被k地方门户源码
  • 洛阳网站建设官网现在一般做网站用什么技术
  • 企业网站代码电影宣传网站模板免费下载
  • 重庆营销型网站建设公司网站分为哪些部分组成部分组成
  • 网站没流量做网站时尺寸多大
  • 网站站点建设的端口中山织树网站建设
  • 网站赚钱系统wordpress 标签链接地址
  • 一学一做看视频网站有哪些内容商城网站开发合同
  • php语言的网站建设公司网公司网页设计制作
  • 海南网站备案域名购买 万网
  • 网站建设编程怎么写网站制作软件dw
  • 沈阳建网站的公司公众号在哪里找