TeamTalk路由服务器

2024-09-01 02:28
文章标签 teamtalk 路由 服务器

本文主要是介绍TeamTalk路由服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

路由相关信令和协议设计

enum BuddyListCmdID {// ...... 暂时省略无关信令CID_BUDDY_LIST_USERS_STATUS_REQUEST = 522,CID_BUDDY_LIST_USERS_STATUS_RESPONSE = 523,// ...... 暂时省略无关信令
};message IMUsersStatReq{//cmd id:		0x020arequired uint32 user_id = 1;repeated uint32 user_id_list = 2;optional bytes attach_data = 20;
}message IMUsersStatRsp{//cmd id:		0x020brequired uint32 user_id = 1;repeated IM.BaseDefine.UserStat user_stat_list = 2;optional bytes attach_data = 20;
}enum UserStatType{USER_STATUS_ONLINE 	= 1;USER_STATUS_OFFLINE	= 2;USER_STATUS_LEAVE	= 3;
}

流程图

请添加图片描述

具体代码逻辑

  1. 在 g_user_map 中根据 user_id 查找对应的状态
  2. 如果不在列表设置为下线状态;如果在列表设置为对应的状态;
  3. 组包回复
void CRouteConn::_HandleUsersStatusRequest(CImPdu* pPdu)
{IM::Buddy::IMUsersStatReq msg;CHECK_PB_PARSE_MSG(msg.ParseFromArray(pPdu->GetBodyData(), pPdu->GetBodyLength()));uint32_t request_id = msg.user_id();uint32_t query_count = msg.user_id_list_size();log("HandleUserStatusReq, req_id=%u, query_count=%u ", request_id, query_count);IM::Buddy::IMUsersStatRsp msg2;msg2.set_user_id(request_id);msg2.set_attach_data(msg.attach_data());list<user_stat_t> result_list;user_stat_t status;for(uint32_t i = 0; i < query_count; i++){IM::BaseDefine::UserStat* user_stat = msg2.add_user_stat_list();uint32_t user_id = msg.user_id_list(i);user_stat->set_user_id(user_id);CUserInfo* pUser = GetUserInfo(user_id);if (pUser) {user_stat->set_status((::IM::BaseDefine::UserStatType) pUser->GetStatus()) ;}else{user_stat->set_status(USER_STATUS_OFFLINE) ;}}// send back query user statusCImPdu pdu;pdu.SetPBMsg(&msg2);pdu.SetServiceId(SID_BUDDY_LIST);pdu.SetCommandId(CID_BUDDY_LIST_USERS_STATUS_RESPONSE);pdu.SetSeqNum(pPdu->GetSeqNum());SendPdu(&pdu);
}CUserInfo* GetUserInfo(uint32_t user_id)
{CUserInfo* pUser = NULL;UserInfoMap_t::iterator it = g_user_map.find(user_id);if (it != g_user_map.end()) {pUser = it->second;}return pUser;
}

这篇关于TeamTalk路由服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125679

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

速盾:直播 cdn 服务器带宽?

在当今数字化时代,直播已经成为了一种非常流行的娱乐和商业活动形式。为了确保直播的流畅性和高质量,直播平台通常会使用 CDN(Content Delivery Network,内容分发网络)服务器来分发直播流。而 CDN 服务器的带宽则是影响直播质量的一个重要因素。下面我们就来探讨一下速盾视角下的直播 CDN 服务器带宽问题。 一、直播对带宽的需求 高清视频流 直播通常需要传输高清视频

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

RTMP流媒体服务器 crtmpserver

http://www.oschina.net/p/crtmpserver crtmpserver又称rtmpd是Evostream Media Server(www.evostream.com)的社区版本采用GPLV3授权 其主要作用为一个高性能的RTMP流媒体服务器,可以实现直播与点播功能多终端支持功能,在特定情况下是FMS的良好替代品。 支持RTMP的一堆协议(RT

云原生之高性能web服务器学习(持续更新中)

高性能web服务器 1 Web服务器的基础介绍1.1 Web服务介绍1.1.1 Apache介绍1.1.2 Nginx-高性能的 Web 服务端 2 Nginx架构与安装2.1 Nginx概述2.1.1 Nginx 功能介绍2.1.2 基础特性2.1.3 Web 服务相关的功能 2.2 Nginx 架构和进程2.2.1 架构2.2.2 Ngnix进程结构 2.3 Nginx 模块介绍2.4

阿里云服务器ces

允许公网通过 HTTP、HTTPS 等服务访问实例 https://help.aliyun.com/document_detail/25475.html?spm=5176.2020520101.0.0.3ca96b0b3KGTPq#allowHttp

常见的服务器

常见的Web服务器 1、Tomcat:Tomcat和Java结合得最好,是Oracle官方推荐的JSP服务器。Tomcat是开源的Web服务器,经过长时间的发展,性能、稳定性等方面都非常优秀。 2、Jetty:另一个优秀的Web服务器。Jetty有个更大的优点是,Jetty可作为一个嵌入式服务器,即:如果在应用中加入Jetty的JAR文件,应用可在代码中对外提供Web服务。 3、Resin:

【vue3|第28期】 Vue3 + Vue Router:探索路由重定向的使用与作用

日期:2024年9月8日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉在这里插入代码片得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.4083;0.98365 = 0.0006 说

Exchange 服务器地址列表的配置方法与注意事项

Exchange Server 是微软推出的一款企业级邮件服务器软件,广泛应用于企业内部邮件系统的搭建与管理。配置 Exchange 服务器地址列表是其中一个关键环节。本文将详细介绍 Exchange 服务器地址列表的配置方法与注意事项,帮助系统管理员顺利完成这一任务。 内容目录 1. 引言 2. 准备工作 3. 配置地址列表 3.1 创建地址列表 3.2 使用 Exchange