蘑菇街TeamTalk源码分析
张小方32
这个作者很懒,什么都没留下…
展开
-
TeamTalk源码分析(一)—— TeamTalk介绍
TeamTalk是蘑菇街开源的一款企业内部用的即时通讯软件(Enterprise IM),类似腾讯的RTX。网上也有很多的介绍,我这里也有写几遍关于这款产品的“流水账”,一方面对自己这段时间的阅读其代码做个总结,尽量做个既能宏观上从全局来介绍,又不缺少很多有价值的微观细节,另一方面如果对于作为读者的您有些许帮助,那就善莫大焉了。 项目地址github:https://g...原创 2017-05-05 14:58:30 · 20223 阅读 · 5 评论 -
TeamTalk源码分析(十) —— 开放一个TeamTalk测试服务器地址和几个测试账号
由于TeamTalk是用于企业内部的即时通讯软件,一般客户端并不提供账号注册功能。如果你仅对TeamTalk的客户端感兴趣,你可以仅仅研究pc端和移动端代码。官方的测试服务器地址已经失效,所以我已经部署了一套TeamTalk服务器,并建立了几个测试账户可以供你使用:tangsengsunwukongzhubajieshaseng==================xiaow...原创 2017-05-25 12:08:05 · 6765 阅读 · 21 评论 -
TeamTalk源码分析(九) —— 服务器端route_server源码分析
route_server的作用主要是用户不同msg_server之间消息路由,其框架部分和前面的服务类似,没有什么好说的。我们这里重点介绍下它的业务代码,也就是其路由细节:void CRouteConn::HandlePdu(CImPdu* pPdu){ switch (pPdu->GetCommandId()) { case CID_OTHER_HEARTB...原创 2017-05-20 15:49:18 · 4038 阅读 · 7 评论 -
TeamTalk源码分析(八) —— 服务器端file_server源码分析
这篇文章我们来介绍file_server服务的功能和源码实现。TeamTalk支持离线在线文件和离线文件两种传送文件的方式。单纯地研究file_server的程序结构没多大意义,因为其程序结构和其他几个服务结构基本上一模一样,前面几篇文章已经介绍过了。我们研究teamtalk的file_server是为了学习和借鉴teamtalk的文件传输功能实现思路,以内化为自己的知识,并加...原创 2017-05-20 15:04:38 · 4238 阅读 · 2 评论 -
TeamTalk源码分析(七) —— 服务器端msf源码分析
这篇文章是对TeamTalk服务程序msfs的源码和架构设计分析。msfs作用是用来接受teamtalk聊天中产生的聊天图片的上传和下载。还是老规矩,把该服务在整个架构中的位置图贴一下吧。可以看到,msfs仅被客户端连接,客户端以http的方式来上传和下载聊天图片。可能很多同学对http协议不是很熟悉,或者说一知半解。这里大致介绍一下http协议,http协议其实也是一种应用层协...原创 2017-05-19 18:13:55 · 8676 阅读 · 8 评论 -
TeamTalk源码分析(六) —— 服务器端login_server源码分析
login_server从严格意义上来说,是一个登录分流器,所以名字起的有点名不符实。该服务根据已知的msg_server上的在线用户数量来返回告诉一个即将登录的用户登录哪个msg_server比较合适。关于其程序框架的非业务代码我们已经在前面的两篇文章《TeamTalk源码分析(四) —— 服务器端db_proxy_server源码分析》和《TeamTalk源码分析(五) —— 服务器端msg_...原创 2017-05-18 16:42:27 · 5188 阅读 · 4 评论 -
TeamTalk源码分析(五) —— 服务器端msg_server源码分析
在分析msg_server的源码之前,我们先简单地回顾一下msg_server在整个服务器系统中的位置和作用:各个服务程序的作用描述如下:LoginServer (C++): 负载均衡服务器,分配一个负载小的MsgServer给客户端使用 MsgServer (C++): 消息服务器,提供客户端大部分信令处理功能,包括私人聊天、群组聊天等 RouteServer (C+...原创 2017-05-18 15:21:06 · 6822 阅读 · 3 评论 -
TeamTalk源码分析(四) —— 服务器端db_proxy_server源码分析
从这篇文章开始,我将详细地分析TeamTalk服务器端每一个服务的源码和架构设计。这篇从db_proxy_server开始:db_proxy_server是TeamTalk服务器端最后端的程序,它连接着关系型数据库mysql和nosql内存数据库redis。其位置在整个服务架构中如图所示:我们从db_proxy_server的main()函数开始,main()函数其实就是做了以下...原创 2017-05-17 18:07:32 · 8635 阅读 · 14 评论 -
TeamTalk源码分析(三) —— 服务器端的程序架构介绍
通过上一节的编译与部署,我们会得到TeamTalk服务器端以下部署程序:db_proxy_serverfile_serverhttp_msg_serverlogin_servermsfsmsg_serverpush_serverrouter_server这些服务构成的拓扑图如下:各个服务程序的作用描述如下:LoginServer (C++): ...原创 2017-05-10 13:30:10 · 12166 阅读 · 5 评论 -
TeamTalk源码分析(二) —— 服务器端的程序的编译与部署
写在前面的话,如果您在部署teamtalk过程中遇到困难,可以关注我的微信公众号『easyserverdev』,在微信公众号中回复『teamtalk部署求助』,我将与你取得联系并协助您解决。或者您对高性能服务器开发感兴趣,您也可以关注我的微信公众号获得技术支持。 这篇我们来介绍下TeamTalk服务器端的编译与部署,部署文档在auto_setup下,这里我们只介...原创 2017-05-05 16:14:20 · 22984 阅读 · 6 评论 -
TeamTalk源码分析(十一) —— pc客户端源码分析
——写在前面的话 在要不要写这篇文章的纠结中挣扎了好久,就我个人而已,我接触windows编程,已经六七个年头了,尤其是在我读研的三年内,基本心思都是花在学习和研究windows程序上了。我很庆幸我当初学习windows程序走了一条正确的路线:先是学习常用的windows程序原理和基本API,再学习的mfc、wtl等一些常用的框架和类库,同时看了大量windows项...原创 2017-07-05 16:03:45 · 17804 阅读 · 11 评论