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

11.2.5 自定义聊天室

1 消息格式

web客户端通过webscoekt发送消息给服务端创建房间。

1.1 客户端->服务端 请求

{"type":"clientCreateRoom","payload":{"roomName":"老周讲golang"}}

1.2 服务端->客户端 响应

{"payload":{"roomId":"1cafd0d6-eb78-11ef-a73b-9b53f2a53745",
"roomNmae":"ros2"},"type":"serverCreateRoom"}

1.3 数据库设计

CREATE TABLE IF NOT EXISTS room_info (room_id VARCHAR(64) NOT NULL PRIMARY KEY,room_name VARCHAR(255) NOT NULL,creator_id BIGINT NOT NULL,create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,INDEX idx_creator (creator_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2 服务端处理

2.1 api_room.h/api_room.cc

新增api_room.h api_room.cc

bool ApiCreateRoom(const std::string& room_id,const std::string& room_name,int creator_id,std::string& error_msg);bool ApiGetRoomInfo(const std::string& room_id,std::string& room_name,int& creator_id,std::string& create_time,std::string& update_time,std::string& error_msg);// 新增:获取所有聊天室列表
bool ApiGetAllRooms(std::vector<Room>& rooms,std::string& error_msg,const std::string& order_by = "create_time DESC");

2.2 websocket_conn.h/websocket_conn.cc

新增处理函数

int handleClientCreateRoom(Json::Value &root);

房间标识 roomId,使用uuid表示,复用api_common.h的 std::string generateUUID() 。

bool PubSubService::AddRoom(const Room& room); 将新房间加入房间列表std::vector<Room> &PubSubService::GetRoomList() ;可以获取房间列表

参考链接:0voice · GitHub

http://www.dtcms.com/a/394170.html

相关文章:

  • 力扣:字母异味词分组
  • Linux视频学习笔记
  • 2014/12 JLPT听力原文 问题四
  • Elasticsearch面试精讲 Day 21:地理位置搜索与空间查询
  • 华为数字化实战指南:从顶层设计到行业落地的系统方法论
  • 外部 Tomcat 部署详细
  • 【回文数猜想】2022-11-9
  • 216. 组合总和 III
  • Bugku-请攻击这个压缩包
  • 2. NumPy数组属性详解:形状、维度与数据类型
  • 【css特效】:实现背景色跟随图片相近色处理
  • vuex原理
  • 内存泄露怎么排查?
  • nginx配置防盗链入门
  • Kafka 多机房、跨集群复制、多租户、硬件与操作系统、全栈监控
  • leetcode136.只出现一次的数字
  • 力扣hot100:环形链表II(哈希算法与快慢指针法思路讲解)
  • 【算法】【Leetcode】【数学】统计1的个数 数位统计法
  • Kafka面试精讲 Day 21:Kafka Connect数据集成
  • MySQL 主从复制完整配置指南
  • 力扣每日一刷Day 23
  • LeetCode 53. 最大子数组和(四种解题思路)包含扩展返回最大和的数组
  • RTX 4090助力深度学习:从PyTorch到生产环境的完整实践指南——高效模型训练与优化策略
  • 23种设计模式之【桥接模式】-核心原理与 Java实践
  • LabVIEW手部运动机能实验
  • 669. 修剪二叉搜索树
  • 大QMT自动可转债申购
  • PolarCTF PWN 网络安全2023秋季个人挑战赛刷题
  • MySQL-day4_02(事务)
  • JUC(8)线程安全集合类