蘑菇街能有今天的快速发展,得益于开源软件群雄崛起的大环境背景,我们一直对开源社区怀有感恩之情,因此也一直希望能为开源社区贡献一份力量。
2013年我们蘑菇街从社区导购华丽转身时尚电商平台,为解决千万妹子和时尚卖家的沟通问题,我们开发了自己的即时通讯软件。既然已经有了用户使用 的IM,为什么我们自己公司内部沟通还要用第三方的呢?因此就有了TT(TeamTalk)的雏形,现在蘑菇街内部的在线沟通全部通过TT来完成。随着 TT功能的逐渐完善,我们决定把TT开源来回馈开源社区,希望国内的中小企业都能用上开源、免费、好用的IM工具!
名称:TeamTalk
官网:http://tt.mogu.io/
开源协议:Apache License, Version 2.0
定位:中小型企业用户,member >= 2
特点:开源与产品并重
功能:可靠的消息传递机制;支持文字、图片、语音等富文本信息;文件收发等
麻雀虽小五脏俱全,本项目涉及到多个平台、多种语言,简单关系如下图:
CppServer:TTCppServer工程,包括IM消息服务器、http服务器、文件传输服务器、文件存储服务器、登陆服务器 java DB Proxy:TTJavaServer工程,承载着后台消息存储、redis等接口 PHP server:TTPhpServer工程,teamtalk后台配置页面
mac:TTMacClient工程,mac客户端工程
iOS:TTIOSClient工程,IOS客户端工程
Android:TTAndroidClient工程,android客户端工程
Windows:TTWinClient工程,windows客户端工程
语言:c++、objective-c、java、php
系统环境:Linux、Windows,Mac, iOS, Android
前言 在上一篇中,简单的分析了下各个服务端的配置,在这一篇中,简单的分析下TeamTalk服务端的整个运作流程。 服务端流程 服务端的启动没有严格的先后流程,因为各端在启动后会去主动连接其所依赖的服务端。不过在此,如果是线上环境,还是建议按照如下的启动顺序去启动(也不是唯一的顺序): 1、启动db_proxy。 2、启动route_server,file_server,msfs 3、启动login
gitee地址: TeamTalk: opensource im - Gitee.com db_proxy_server启动会报: error while loading shared libraries libhiredis.so.0.13 拷贝: cp /home/TeamTalk/server/src/hiredis/hiredis-master/libhiredis.so /home/Te
在看之前需要知道,本篇文章以Login_server为主体分析 对于监听fd(也就是listenfd)的回调函数的接口是不同的 (有http_callback,msg_serv_callback,client_callback三种接口),而普通的fd的回调函数的统一接口是imconn_callback(除了客户端请求登录的http连接的接口是httpconn_callback),记住imconn_
一、线程池模型 生产者自主选择消费者(teamtalk思路):任务队列存在于每个工作线程,当有新任务到来时,线程池管理线程自主随机向其中一个工作线程派发任务,推送到该工作线程的任务队列中,接着唤醒该工作线程,从任务队列中取出任务执行。 每个工作线程拥有一个条件变量,一把锁,但是通过类CThreadNotify管理使用方便很多 消费者竞争:线程池管理线程维护任务队列,当有任务到来时,任务存于该队列中
项目下载地址:https://github.com/mogujie/TeamTalk.git 安装环境:centos7.0+vmware14.0.0+windows 安装前的网络准备(局域网): vmware设置->选择桥接网络 windows静态ip地址,例如192.168.11.102 设置centos静态ip地址,例如192.168.11.104 1、下载源码 cd /root git c
TeamTalk是蘑菇街开源的一款企业内部用的即时通讯软件(Enterprise IM),类似腾讯的RTX。。
1. 简介 用于TeamTalk通讯数据包的构造与解析 CImPdu结构为自定义头+protobuf序列化后的消息 该模块依赖于UtilPdu工具类,使用了protobuf第三方库 2. 常用接口说明 pdu header结构如下: typedef struct { uint32_t length; // the whole pdu length uint16_t ver
一、部署环境 系统:centos7 X64位(32位不支持)核心版本 二、部署过程 项目下载地址https://github.com/mogujie/TeamTalk.git,这个项目已经是三年前的版本,其中有部分脚本的地址已经404了,也就是mariadb中的源部分,部署的时候需要修改。我修改了一下,上传到我的gitee的代码仓了,供大家使用。 cd /opt git clone https:/
1.简介 使用pthread.h封装了普通锁、读写锁、普通局部锁和读写局部锁 2.主要类说明 CLock:封装了普通锁的实现 主要接口: lock/try_lock:加锁/尝试加锁 unlock:解锁 CRWLock:封装了读写锁的实现 主要接口: rlock/wlock:加读锁/加写锁 try_rlock/try_wlock:尝试加读锁/尝试加写锁 unlock:解锁 CAutoLock:封装了
本文向大家介绍B/S(Web)实时通讯解决方案分享,包括了B/S(Web)实时通讯解决方案分享的使用技巧和注意事项,需要的朋友参考一下 B/S的实时通讯实现起来比较麻烦,因为http协议是无状态的,导致一些实时消息通知和聊天等功能比较难以实现,本文主要简述几种自己之前常用的几种方式。 1、传统的HTTP协议是无状态的 传统的HTTP协议是无状态的,每次请求(request)都要由客户端(如 浏览器
Lync (后来被微软收购之后改名为 Skype for business) 没有 linux 版本,但是我们可以通过 pidgin 这个IM通用外壳配置 sipe 插件来实现和 Lync 的兼容和相互通讯。 注: 方案不够完美,但是至少,可以解决有没有的问题。 Pidgin 上一节介绍到,Linux Mint 18 自带 pidgin,也可以自行卸载再从源码编译安装到最新版本。 特别说明: 手工
Linux Mint 自带 pidgin,版本是 2.10。 从源码编译 如果想升级到最新版本,或者,因为某些特殊原因导致内置版本的 pidgin 不可使用,就需要考虑从源码开始编译。 特别说明: 手工编译升级 pidgin 和 lync插件 pidpin-sipe 到最新版本之后,开始可以使用,后面不久就莫名其妙的出问题,表现为 pidgin 启动之后无法找到 pidpin-sipe 导致无法支
Skype for Linux Alpha 是Skype for Linux 新版本的早期版本。 安装 下载地址: https://go.skype.com/skypeforlinux-64-alpha.deb 完成之后直接右键点击 deb 文件通过 Gdebi package installer 安装。 安装完成之后,在互联网下就可以找到 Skype for Linux Alpha: 这是 ab
轻量化一点,不用太复杂的
软件: Skype: skype For Linux Alpha Pidgin: 支持多协议的即时通讯软件 Lync兼容方案: 用于兼容 Lync 2013 / skype for business