C++基于websocket的多用户网页五子棋 ---- 整合封装服务器模块设计实现

前言:

在前面已经讲过了,项目整体的设计,和各个需要模块的介绍;所以各种所需的接口api都完成,现在需要把他们整合起来,搭建一个服务器模块,这个模块是对外提供服务器接口的;需要这个服务器模块,进行完成服务器的搭建;

服务器模块,是对当前所实现的所有模块的一个整合,并进行服务器搭建的一个模块,最终封装实现出一个gobang_server的服务器模块类,向外提供搭建五子棋对战服务器的接口。通过实例化的对象可以简便的完成服务器的搭建。

服务器的整合实现的思路:

  1. 网络通信接口的设计
    收到一个什么格式的数据,代表了什么样的请求,应该给与什么样的业务处理及响应

  2. 开始搭建服务器(就是整合一个sever,把各种接口整合到一起)

  3. 搭建websocket服务器,实现网络通信( wsserver_t _wssrv,类函数成员)

  4. 针对各种不同的请求进行不同的业务处理(整体代码思路。,中有具体讲解)

如下展示了,客户端在运行过程中所需的各种业务;

客户端的各种业务流程如图:

根据项目整体的设计,中的一个整体流程图(如下)可以整合客户端业务的流程(如下下图)

客户端业务的流程

根据不同的请求,资源。又分为静态资源请求与动态功能请求;

静态资源,在这里简单来说就是一个html页面,

动态功能,也就是服务器端所提供的代码功能服务;

整体代码思路

我们这里的思路就是回调函数,根据不同请求来分类,然后进行不同的功能调用,简单流程图如示:

写这些接口的思路:


通信接口设计

大家写的时候要看这些接口设计才能写全部的代码,当然我也是看着前人的接口设计写的;

这里通讯接口的设计是,Restful风格。

也就是定义客户端(如浏览器)和服务器之间"对话"的规则。

就像两个人交流需要约定 使用同一种语言和语法一样,客户端和服务器也需要约定好请求和响应的格式、含义以及行为
而这种交流需要约定 的风格就是restful风格,它是一种非常流行和规范的Web通信接口设计风格。

核心思想 :将网络上的所有事物(如用户、订单、一个HTML页面)都视为"资源 "。然后,通过标准的 HTTP 方法(动词)来对这些资源进行操作。

  • GET :用于获取/读取资源。

  • POST :用于创建新资源。

  • PUT :用于完整更新资源。

  • DELETE :用于删除资源。

在写代码时,需要根据这些请求和响应的格式来写对应的reg,resp的json串的内容;

举个例子,如,注册时服务器向客户端http的响应

服务器端 要发送的请求与要求的json,都是要和其是一样的;

静态资源请求

注册用户

用户登录

获得客户信息

websocket长连接协议切换请求(进入游戏大厅)

WebSocket握手成功后的回复:表示游戏大厅已经进入成功:

开始匹配对战

停止匹配

websocket长连接协议切换请求(进入游戏房间)

WebSocket握手成功后的回复:表示游戏房间已经进入成功。

走棋

聊天

相关推荐
ulias21220 小时前
Linux系统中的权限问题
linux·运维·服务器
青花瓷21 小时前
Ubuntu下OpenClaw的安装(豆包火山API版)
运维·服务器·ubuntu
问简1 天前
docker 镜像相关
运维·docker·容器
Dream of maid1 天前
Linux(下)
linux·运维·服务器
齐鲁大虾1 天前
统信系统UOS常用命令集
linux·运维·服务器
Benszen1 天前
Docker容器化技术实战指南
运维·docker·容器
ZzzZZzzzZZZzzzz…1 天前
Nginx 平滑升级:从 1.26.3 到 1.28.0,用户无感知
linux·运维·nginx·平滑升级·nginx1.26.3·nginx1.28.0
一叶知秋yyds1 天前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
专吃海绵宝宝菠萝屋的派大星1 天前
使用Dify对接自己开发的mcp
java·服务器·前端
斯普信云原生组1 天前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器