网页版五子棋——对战模块(服务器端开发②)

前一篇文章:网页版五子棋——对战模块(服务器端开发①)-CSDN博客

项目源代码:Java: 利用Java解题与实现部分功能及小项目的代码集合 - Gitee.com

目录

·前言

 一、创建并注册 GameAPI 类

1.创建 GameAPI 类

2.注册 GameAPI 类

二、实现 GameAPI 中继承的方法

1.通知玩家就绪

2.处理连接成功

3.处理落子请求

4.通知对手获胜

5.处理玩家退出

三、测试对战功能

·结尾


·前言

        在前一篇文章中介绍了五子棋项目中核心部分有关落子操作相关的逻辑,本篇文章将继续对五子棋项目中对战模块的服务器端代码进行编写,下面我们要进行 WebSocket 请求入口类的编写,实现其继承的方法,还有对整个对战模块功能的测试,本篇文章中将要新增的代码文件如下图圈起来的文件所示:网页版五子棋——对战模块(服务器端开发②)_第1张图片

        下面就开始本篇文章的内容介绍: 

 一、创建并注册 GameAPI 类

1.创建 GameAPI 类

        创建 GameAPI 类,继承自 TextWebSocketHandler 它是作为处理 WebSocket 请求的入口类,其中要重写的几个方法,及每个方法的用途在前面文章已经进行了介绍,文章链接:网页版五子棋—— WebSocket 协议_网页可以实现websocket吗-CSDN博客 ,下面我们先把 GameAPI 类的一个空架子搭好,并且这里要准备几个对象如下所示:

  • 准备一个 ObjectMapper 对象,用来处理 JSON 数据;
  • 注入 RoomManager 对象,用来获取玩家所在房间,还有进行释放房间的操作;
  • 注入 OnlineUserManager 对象,用来获取当前玩家的在线状态,还有获取玩家的连接信息用于判断当前玩家是否多开,和给玩家返回响应;
  • 注入 UserMapper 对象,用于更新对局结束后玩家的信息。

        GameAPI 类空架子的代码及详细介绍如下所示: 

// 通过这个类来处理对战模块中的 WebSocket 请求
@Component
public class GameAPI extends TextWebSocketHandler {
    // 创建 RoomManager 对象, 用来获取玩家所在房间,还有进行释放房间的操作
    @Autowired
    private RoomManager roomManager;
    // 创建 ObjectMapper 对象, 用来处理 JSON 数据
    private ObjectMapper objectMapper = new ObjectMapper();
    // 创建 OnlineUserManager 用来管理玩家的状态信息
    @Autowired
    private OnlineUserManager onlineUserManager;
    // 创建 UserMapper 对象,用于更新对局结束后玩家的信息
    @Autowired
    private UserMapper userMapper;

    // 连接就绪后就会触发这个方法
    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        
    }

    // 客户端/服务器 给 服务器/客户端 发送信息通过这个方法就可以接收到信息
    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        
    }

    // 传输出现异常就会触发这个方法
    @Override
    public void handleTransportError(WebSocketSession session, Throwable exception) throws Exception {
        
    }

    // 如果客户端/服务器关闭连接就会执行这个方法
    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        
    }

}

2.注册 GameAPI 类

        修改 WebSocketConfig 类,把 GameAPI 注册进去,修改后的 WebSocketConfig 类的具体代码及详细介绍如下所示:

// @EnableWebSocket 注解用来告诉 Spring 这是配置 WebSocket 的类
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
    // 自动注入
    @Autowired
    private TestAPI testAPI;

    @Autowired
    private MatchAPI matchAPI;

    @Autowired
    private GameAPI gameAPI;

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        // 当客户端连接 /test 这样的路径后就会触发 testAPI 进而调用其内部的方法
        registry.addHandler(testAPI,"/test");

        // 当客户端连接 /findMatch 这样的路径后就会触发 matchAPI 进而调用其内部的方法
        registry.addHandler(matchAPI,"/findMatch")
                // 把之前登录过程中往 HttpSession 中存放的 User 对象, 放到

你可能感兴趣的:(网页版五子棋项目,实战项目,websocket,java,spring,spring,boot)