当前位置: 首页 > news >正文

音乐介绍网站怎么做seo服务的内容

音乐介绍网站怎么做,seo服务的内容,企业邮箱app下载,wordpress添加自定义字段服务器端应检测到客户端是否异常退出,因此本节来实现客户端异常退出,项目流程见后文 一、客户端异常退出业务流程 (1)在业务模块定义处理客户端异常退出的函数 (2)集群聊天服务器项目(八)提到…

服务器端应检测到客户端是否异常退出,因此本节来实现客户端异常退出,项目流程见后文

一、客户端异常退出业务流程

(1)在业务模块定义处理客户端异常退出的函数

(2)集群聊天服务器项目(八)提到,哈希表_userConnMap存储用户的id和通信连接,若客户端异常退出,表示该客户端登录用户已经下线,那么需要对_userConnMap中对应用户的在线连接进行删除。由于_userConnMap是线程不安全的,操纵需加互斥锁访问。

(3)依次遍历哈希表_userConnMap,判断是否有通信连接同退出的客户端连接一致

若一致,则依据通信连接对应的用户id,删除_userConnMap中通信连接

由于客户端异常退出,表示登录用户已经下线,更新用户状态为offline

二、客户端异常退出业务代码实现

在include/server/chatservice.hpp中创建public公有权限函数,处理客户端异常退出服务

#ifndef CHATSERVICE_H
#define CHATSERVICE_H#include <muduo/net/TcpConnection.h>
#include <unordered_map>//一个消息ID映射一个事件处理 
#include <functional>
#include <mutex>
using namespace std;
using namespace muduo;
using namespace muduo::net;#include "usermodel.hpp"
#include "json.hpp"
using json = nlohmann::json;//表示处理消息的事件回调方法类型,事件处理器,派发3个东西 
using MsgHandler = std::function<void(const TcpConnectionPtr &conn, json &js, Timestamp)>;//聊天服务器业务类
class ChatService
{
public://获取单例对象的接口函数static ChatService *instance();//处理登录业务void login(const TcpConnectionPtr &conn, json &js, Timestamp time);//处理注册业务void reg(const TcpConnectionPtr &conn, json &js, Timestamp time);//处理客户端异常退出void clientCloseException(const TcpConnectionPtr &conn);//获取消息对应的处理器MsgHandler getHandler(int msgid);
private:ChatService();//单例 //存储消息id和其对应的业务处理方法,消息处理器的一个表,写消息id对应的处理操作 unordered_map<int, MsgHandler> _msgHandlerMap;//存储用户的通信连接unordered_map<int,TcpConnectionPtr> _userConnMap;//定义互斥锁,保证_userConnMap的线程安全mutex _connMutex;//数据操作类对象UserModel _userModel;offlineMsgModel _offlineMsgModel;};#endif

在chatservice.cpp中进行实现

// 处理客户端异常退出
void ChatService::clientCloseException(const TcpConnectionPtr &conn)
{User user;{lock_guard<mutex> lock(_connMutex);for (auto it = _userConnMap.begin(); it != _userConnMap.end(); it++){if (it->second == conn){user.setId(it->first);// 从map表中删除用户的连接信息_userConnMap.erase(it);break;}}}// 更新用户的状态信息if (user.getId() != -1){user.setState("offline");_userModel.updateState(user);}
}

三、功能验证

启动ChatServer服务器程序

查看数据库用户当前状态

所有用户均不在线

使用张三的账号进行登录,可以发现张三登录成功,底层数据库显示在线

张三用户异常退出,可以看到成功捕获到退出信息了,并在数据库中进行操作

查看数据库,发现张三下线了

客户端异常退出业务验证成功!

如果有问题,还请及时联系我,感谢大家的批评与指正!谢谢~

项目流程

1、项目环境搭建 

C++项目——集群聊天服务器项目(一)项目介绍、环境搭建、Boost库安装、Muduo库安装、Linux与vscode配置_c++集群聊天服务器-CSDN博客

2、Json第三方库介绍

C++项目——集群聊天服务器项目(二)Json第三方库-CSDN博客

3、muduo网络库介绍

C++项目——集群聊天服务器项目(三)muduo网络库-CSDN博客

4、MySQL数据库创建

C++项目——集群聊天服务器项目(四)MySQL数据库-CSDN博客

5、网络模块与业务模块代码编写

C++项目——集群聊天服务器项目(五)网络模块与业务模块-CSDN博客

6、MySQL模块编写

C++项目——集群聊天服务器项目(六)MySQL模块-CSDN博客

7、Model层设计、注册业务实现

C++项目——集群聊天服务器项目(七)Model层设计、注册业务实现-CSDN博客

8、用户登录业务

C++项目——集群聊天服务器项目(八)用户登录业务-CSDN博客

http://www.ds6.com.cn/news/98754.html

相关文章:

  • 广州网站开发哪家专业百度网站链接提交
  • 能在线做初中题的网站我想做app推广代理
  • 长春网站制作培训优化设计七年级下册数学答案
  • 招聘网站怎么做线下活动在线生成个人网站
  • 深圳有哪些软件公司什么是seo和sem
  • 做网站的没有进项票怎么办江苏网页定制
  • 做淘宝店铺装修的公司网站seo关键词快速排名软件
  • 项目管理软件 project教程seo是什么意思职业
  • 我的世界日本怎么做视频网站百度导航下载2020新版语音
  • 为什么说做网站赚钱网站推广的案例
  • markdown直接做网站b2b免费发布信息网站
  • 合肥到黄山旅游攻略长沙网站seo诊断
  • 房产网站建设seo自学网官网
  • 建一个动物网站怎么做软文范例大全100字
  • 什么是seo站内优化网络广告营销的特点
  • 电脑本地网站建设手机百度账号登录入口
  • 南通市建设局网站直播营销策略有哪些
  • 公司网站制作费用申请网络营销培训
  • 阿里云网站建设 部署与发布答案网站推广和宣传的方法
  • 安徽网站建设公司足球进球排行榜
  • 幼儿园网站建设总结站长基地
  • 中国供应商网是免费的吗seo工具包括
  • wordpress模板如何安装教程视频seo的中文含义是什么
  • 重庆公司网站建设价格网络舆情处置的五个步骤
  • 关于建网站做淘宝联盟社群运营
  • 长沙做网站建设百度客服在线咨询
  • 网站转移动版免费个人网站模板
  • 发布网站需要备案吗google搜索引擎下载
  • 桂林dj网站百度一下网页版搜索引擎
  • 香港响应式网站建设广西壮族自治区在线seo关键词排名优化