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

走棋

聊天

相关推荐
Lsir10110_3 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
郝学胜-神的一滴3 小时前
深入浅出:使用Linux系统函数构建高性能TCP服务器
linux·服务器·开发语言·网络·c++·tcp/ip·程序人生
Doro再努力4 小时前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim
全栈工程师修炼指南4 小时前
Nginx | stream content 阶段:UDP 协议四层反向代理浅析与实践
运维·网络·网络协议·nginx·udp
Lsir10110_4 小时前
【Linux】进程信号(上半)
linux·运维·服务器
开开心心就好4 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
火车叼位5 小时前
脚本伪装:让 Python 与 Node.js 像原生 Shell 命令一样运行
运维·javascript·python
css趣多多5 小时前
add组件增删改的表单处理
java·服务器·前端
Sheep Shaun5 小时前
揭开Linux的隐藏约定:你的第一个文件描述符为什么是3?
linux·服务器·ubuntu·文件系统·缓冲区
野犬寒鸦5 小时前
从零起步学习并发编程 || 第七章:ThreadLocal深层解析及常见问题解决方案
java·服务器·开发语言·jvm·后端·学习