网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(四)对战模块

网页版Java(Spring/Spring Boot/Spring MVC)五子棋项目(四)对战模块

  • 一、约定前后端交互接口
    • 1. 建立连接接口
    • 2. 针对落子的请求和响应
  • 二、实现前端页面
  • 三、实现后端
    • 1. 当用户进入房间,更新用户状态 OnlineUserManager
    • 2. 用户进入房间,服务器会怎么做

一、约定前后端交互接口

1. 建立连接接口

在这里插入图片描述

2. 针对落子的请求和响应

在这里插入图片描述

二、实现前端页面

在这里插入图片描述
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>游戏房间</title><link rel="stylesheet" href="css/common.css"><link rel="stylesheet" href="css/game_room.css">
</head>
<body><div class="nav">五子棋对战</div><div class="container"><div><!-- 棋盘区域, 需要基于 canvas 进行实现 --><canvas id="chess" width="450px" height="450px"></canvas><!-- 显示区域 --><div id="screen"> 等待玩家连接中... </div></div></div><script src="js/script.js"></script>
</body>
</html>

三、实现后端

1. 当用户进入房间,更新用户状态 OnlineUserManager

package com.example.java_gobang.game;import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;import java.util.HashMap;
import java.util.concurrent.ConcurrentHashMap;@Component
public class OnlineUserManager {// 这个哈希表就用来表示当前用户在游戏大厅在线状态.private ConcurrentHashMap<Integer, WebSocketSession> gameHall = new ConcurrentHashMap<>();// 这个哈希表就用来表示当前用户在游戏房间的在线状态.private ConcurrentHashMap<Integer, WebSocketSession> gameRoom = new ConcurrentHashMap<>();public void enterGameHall(int userId, WebSocketSession webSocketSession) {gameHall.put(userId, webSocketSession);}public void exitGameHall(int userId) {gameHall.remove(userId);}public WebSocketSession getFromGameHall(int userId) {return gameHall.get(userId);}public void enterGameRoom(int userId, WebSocketSession webSocketSession) {gameRoom.put(userId, webSocketSession);}public void exitGameRoom(int userId) {gameRoom.remove(userId);}public WebSocketSession getFromGameRoom(int userId) {return gameRoom.get(userId);}
}

2. 用户进入房间,服务器会怎么做

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/30298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux mysql5.7开启 binlog

查看 mysql是否开启 binlog。 查看命令&#xff1a; show variables like %log_bin%; log_bin OFF 是关闭的状态。 编辑my.cnf配置文件 vim /etc/my.cnf 默认的配置文件内容&#xff1a; 增加下面内容 server_id 1 binlog_format ROW log-bin mysql_log_bin 重启mysq…

Chromium内核浏览器编译记(三)116版本内核UI定制

转载请注明出处&#xff1a;https://blog.csdn.net/kong_gu_you_lan/article/details/132180843?spm1001.2014.3001.5501 本文出自 容华谢后的博客 往期回顾&#xff1a; Chromium内核浏览器编译记&#xff08;一&#xff09;踩坑实录 Chromium内核浏览器编译记&#xff08;…

木马免杀(篇一)基础知识学习

木马免杀&#xff08;篇一&#xff09;基础知识学习 ———— 简单的木马就是一个 exe 文件&#xff0c;比如今年hw流传的一张图&#xff1a;某可疑 exe 文件正在加载。当然木马还可能伪造成各式各样的文件&#xff0c;dll动态链接库文件、lnk快捷方式文件等&#xff0c;也可能…

MySQL单表查询

单表查询 素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varch…

Spring MVC项目概述及创建

Spring MVC项目概述及创建 1.什么是Spring MVC Spring MVC是基于SevletAPI的原始Web框架。Spring MVC项目也叫做SpringWeb项目。 它是在springboot项目中引入了web框架&#xff0c;原本的spring项目不具备网络通信能力&#xff0c;而spring mvc允许http响应&#xff0c;当用…

无刷电机控制

无刷电机控制 特点: 线圈不动&#xff0c;磁极转动电子换向方式消除了有刷电机的缺点单位质量/功率转矩大驱动较复杂

群狼调研(靠谱市场调查公司):住宅物业满意度详细指标设计

群狼调研(长沙靠谱市场调查公司)受顾客委托开展住宅物业满意度调研&#xff0c;设计住宅物业满意度调研的详细指标需要考虑多个方面&#xff0c;包括物业服务质量、环境质量、安全与安保、社区活动与设施、居民沟通与投诉处理、费用管理与透明度等。以下是一些常见的详细指标设…

徐雷,太委屈

文 | 螳螂观察 作者 | 仲夏 自3月8日上线以来&#xff0c;京东百亿补贴已整整5个月。相比首月投入10个亿&#xff0c;京东百亿补贴如今的存在显得尴尬与鸡肋。 眼看百亿补贴难以肩负发力下沉市场、扛起低价策略的重任&#xff0c;京东近期又将“京喜拼拼”更名“京东拼拼”卷…

putty上传下载文件笔记

首先声明一点&#xff0c;putty是不支持上传下载的&#xff0c;但是可以变通实现。 通过cmd命令行实现 安装putty后&#xff0c;cmd可以使用pscp命令来上传下载。 1.本地上传至服务器 语法&#xff1a; pscp 盘名:\文件路径\文件名 用户名ip地址:路径 示例&#xff1a; ps…

FFmpeg 编码详细流程

介绍 FFmpeg的 libavcodec 模块完成音视频多媒体的编解码模块。FFmpeg 本身不具有音视频编码的功能和底层能力&#xff0c;只是对各类第三方的编码器API 进行封装调用。老版本的 FFmpeg 将avcodec_encode_video2()作为视频的解码函数 API&#xff0c;将avcodec_encode_audio2(…

(学习笔记-进程管理)进程间有哪些通信方式?

每个进程的用户地址空间都是独立的&#xff0c;一般而言是不能互相访问的&#xff0c;但内核空间时每个进程都共享的&#xff0c;所以进程之间要通信必须通过内核 管道 在Linux命令中 [ | ] 这个竖线就是一个管道。 $ ps auxf | grep mysql 它的功能是讲前一个命令&#xf…

如何使用 AT+WEBSERVER 指令实现自定义的 Webserver html 网页配网

开启 AT 固件中的 Webserver 指令和 FS 指令支持 乐鑫官网发布的默认通用 AT 固件不支持 webserver 配网功能&#xff0c; 需要用户自己搭建 esp-at 环境&#xff0c;并在 sdkconfig 中开启 webserver AT 指令 和 FS 指令的支持&#xff0c; 如下图所示&#xff1a; 测试 AT 固…

java中try-with-resources自动关闭io流

文章目录 java中try-with-resources自动关闭io流0 简要说明try-with-resources java中try-with-resources自动关闭io流 0 简要说明 在传统的输入输出流处理中&#xff0c;我们一般使用的结构如下所示&#xff0c;使用try - catch - finally结构捕获相关异常&#xff0c;最后不…

【香瓜说职场】疫情期间(2020.04.16)

一、疫情分析 也许是因为创业了一段时间&#xff0c;习惯了对产品和行业前景的分析与预测&#xff0c;在新冠肺炎爆发后&#xff0c;我在家对当前疫情进行了分析与自我预防。 在新冠肺炎爆发后&#xff0c;我首先去百度搜索了“非典”的历史&#xff0c;惊讶地发现“非典”是12…

Mybatis-plus的使用

1、介绍 2、开发方式 3、MyBatisPlus-01-MybatisPlus入门案例_哔哩哔哩_bilibili&#xff0c;105,3.55分钟 Mybatis使用流程可以看这&#xff1a; 4、創建一張表&#xff1a; ​ 5、创建一个SpringBoot工程 ​ ​ 6、版本调成8 ​ 7、这里之只做数据层&#xff0c;不弄we…

SpringBoot 依赖管理

Spring Boot 依赖管理 在 Spring Boot 中&#xff0c;依赖管理是通过 Maven 或 Gradle 进行管理的。Spring Boot 提供了一种简化的方式来管理和引入依赖项&#xff0c;使得构建和管理项目变得更加容易。下面是一些关于 Spring Boot 依赖管理的基本信息和示例&#xff1a; 使用…

如何系统的学习单片机?

一、学习单片机需要的一些基础知识 &#xff08;1&#xff09;要具有一些模电、数电的知识&#xff08;不一定要精通&#xff0c;但基本至少要知道&#xff09; &#xff08;2&#xff09;具备C语言基础&#xff0c;有基础就可以入门了。数据结构、设计模式、汇编这些&#x…

go的type关键字

在 Go 语言中&#xff0c;type 关键字用于定义自定义数据类型&#xff08;类型别名、结构体、接口等&#xff09;&#xff0c;以及获取某个变量的类型信息。type 关键字有多种用法&#xff0c;下面将详细解释这些用法&#xff1a; 1. 自定义数据类型 使用 type 关键字可以定义…

管理类联考——逻辑——论证逻辑——汇总篇——真题和典例——假设

通用方法/没有特点 方法关系 199-2013-1-41——方法关系——方法有效或方法可行 新近一项研究发现&#xff0c;海水颜色能够让飓风改变方向&#xff0c;也就是说&#xff0c;如果海水变色&#xff0c;飓风的移动路径也会变向。这也就意味着科学家可以根据海水的“脸色”判断…

Win10关闭自动更新的方法和影响(Windows modules installer worker cpu占用过高)

目录 问题描述&#xff1a; Windows modules installer worker是什么&#xff1f; Win10关闭自动更新的方法&#xff1a; Win10关闭自动更新的影响&#xff1a; 问题描述&#xff1a; 有时我们在使用电脑的过程中会突然出现电脑运行过慢&#xff0c;发热&#xff0c;风扇噪…