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握手成功后的回复:表示游戏房间已经进入成功。

走棋

聊天

相关推荐
万联WANFLOW5 小时前
异地组网速度忽快忽慢到底怎么回事?直连与中继的判断方法和处理步骤
运维·网络·网络协议·p2p
SDWAN_Cheap5 小时前
物理服务器跟云服务器有什么区别,使用于什么场景
运维·服务器
Smoothcloud润云5 小时前
GPU算力平台推荐:复现实验时,如何判断租用资源是否合适?
服务器·人工智能·深度学习·gpu算力·gpu
叼烟扛炮7 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
福建佰胜张工7 小时前
深度解析 Allen-Bradley 150-B135NBDA 智能电机控制器:选型、参数与工业应用
运维·数据库·单片机·嵌入式硬件·安全·自动化
wefg17 小时前
【Docker】镜像相关指令
运维·docker·容器
feng_you_ying_li8 小时前
linux之网络层
linux·运维·网络
未来之窗软件服务8 小时前
Linux 运维日志删除的多种方式—东方仙盟
linux·运维·服务器·仙盟创梦ide·东方仙盟
卓豪终端管理8 小时前
IT 运维视角下的终端数据安全:能力框架与落地清单
运维
小雉系统8 小时前
BcoreOS实战:用一个升级包,让Rocky Linux跑进Debian服务器
linux·运维·服务器·debian