TeamTalk服务器的学习1
来源:互联网 发布:溺水事件2017最新数据 编辑:程序博客网 时间:2024/06/17 20:05
基础类
BaseSocket a wrap for non-block socket class for Windows, LINUX and MacOS X platform,实现socket的封装类CBaseSocket。
ConfigFileReader 解析配置文件的类。
EventDispatch 一个轮训类,处理到时回调(时间到了做回调),SOCKET。
imconn ?
ImPduBase ImPduServer ImPduClient ImPduFile ImPduGroup 定义一个基础消息格式类CImPdu,中很多消息格式类都派生自该类。
netlib 对CBaseSocket,CEventDispatch的应用。
ServInfo ?
util 工具类,实现多种封装类CThread(线程),CThreadLock(线程保护锁),CRefObject(引用对象类),CStrExplode(字符串解析类)。
UtilPdu 包含动态增长的BUF类CSimpleBuffer,Byte的BUF类CByteStream。
login_server
一台负载均衡服务器,用来通知客户端连接到负载最小的msg_server。
1
login_server在整个TT的架构中,可以简单的理解为一个负载均衡的作用,在login_server中,同样在内存中维护了所有的msg_server的地址以及其目前的负载情况。
route_server
一台消息转发服务器,客户端消息发送到msg_server。msg_server判断接收者是否在本地,是的话,直接转发给目标客户端。否的话,转发给route_server。
route_server接收到msg_server的消息后,获取to_id所在的msg_server,将消息转发给msg_server。msg_server再将消息转发给目标接收者。
1
route_server 在整个tt中的作用是一个消息转发的地方,其在内存中维护了全局用户信息。当有多个msg_server的时候,route_server的作用就是在多个msg_server之间中转消息。
2
g_rs_user_map是一个hash_map,保存了全局用户信息,当有用户上线的时候,msg_server会将该用户的状态发送到route_server,route_server就会在g_rs_user_map里面插入一条记录。
msg_server
客户端连接服务器(N台)。客户端通过msg_server登陆,保持长连接。
1
msg_server 启动后会去主动连接login_server,并通过数据包CImPduMsgServInfo向login_server注册自己的信息。
2
当有用户连接上msg_server并登录成功或者用户断开连接的时候,会向login_server发送一个CImPduUserCntUpdate数据包通知login_server,login_server收到后,修改对应msg_server的负载值。
3
当有用户连接上msg_server并登录成功或者用户断开连接的时候,会向route_server发送一个CImPduUserStatusUpdate数据包通知route_server,route_server记录用户的msg_server。
4
msg_server 启动后会去主动连接route_server,并通过数据包CImPduOnlineUserInfo向route_server报告自己当前在线的用户情况。
数据库操作
消息记录,获取用户信息等需要操作数据库的,由msg_server发送到db_server。db_server操作完后,发送给msg_server。
- TeamTalk服务器的学习1
- TeamTalk--消息服务器的轮训
- TeamTalk--登陆服务器的分析
- TeamTalk服务器
- 我的teamtalk学习历程 -- (1)安装,编译及配置
- 最快速的TeamTalk 服务器部署方
- TeamTalk服务器搭建
- CentOS部署TeamTalk服务器
- TeamTalk 服务器--配置
- teamtalk
- TeamTalk
- TeamTalk服务器布署-一键修改版
- TeamTalk消息服务器原理及二次开发简介
- TeamTalk消息服务器原理及二次开发简介
- 编译蘑菇街的teamtalk
- TeamTalk编译连接过程中遇到的问题及解决方法(iOS)(1)
- 编译teamtalk遇到的一些问题
- 蘑菇街的开源IM:TeamTalk
- xpages视图文档在新窗口打开
- Unity3D中Coroutine介绍
- PAT1004
- Android快速开发系列 10个常用工具类
- ExcelUtils -- excel模板引擎,导出excel最简单的方法
- TeamTalk服务器的学习1
- Larbin之PersistentFifo类解析
- 看好你的门-确保验证机制的安全(4)-防止蛮力攻击登陆
- Android最基础知识(持续更新)
- 正则表达式语法介绍
- Spring中DispacherServlet、WebApplicationContext、ServletContext的关系
- Android独特的架构:HAL与Dalvik虚拟机
- 看好你的门-确保验证机制的安全(5)-防止滥用密码修改和密码找回功能
- PHP: 深入pack/unpack