标点符(钱魏 Way)

来自蘑菇街的开源IM:TeamTalk

TeamTalk 是蘑菇街开源的一款企业办公即时通信软件,最初是为自己内部沟通而做的 IM 工具。 GitHub 仓库 团队对外博客 项目框架 麻雀虽小五脏俱全,本项目涉及到多个平台、多种语言,简单关系如下图: 服务端: CppServer:TTCppServer工程,包括IM消息服务器、http服务器、文件传输服务器、文件存储服务器、登陆服务器 Java DB Proxy:TTJavaServe […]

即时通讯之Socket.IO的学习

  Web领域的实时推送技术,也被称作Realtime技术。这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新。它有着广泛的应用场景,比如在线聊天室、在线客服系统、评论系统、WebIM等。 WebSocket简介 谈到Web实时推送,就不得不说WebSocket。在WebSocket出现之前,很多网站为了实现实时推送技术,通常采用的方案是轮询(Polling)和Comet技术 […]

XMPP服务器的选型

XMPP Server方案简介 XMPP Server拥有众多的实现方案: 其中,较为成熟,且使用广泛的是ejabberd, jabberd 2.x, Openfire, Tigase(蓝底标出). 这几个Server的详细比较可以参考这两篇文章:Choosing An XMPP Server, Android Push 开源方案解析. 以上两篇文章的结论如下: Jabberd 2.x 使用C语言 […]

即时通讯协议的选型之XMPP

IM协议按照是否公开可以分为私有协议(腾讯QQ)和开放协议(GTalk)。私有IM协议需要从零开始设计和搭建,时间和财力成本极高。而开放协议: 经过业界的长期研究和验证,在安全性、完备性容、容错性等诸多方面都有保障。 由于其开放的特性,业界已经有很多优秀的开源IM Server和IM Client,直接基于这些开源组件进行开发,可以在相对短的时间内快速搭建高质量的Chat基础服务。 开放协议一般具 […]

陌陌通讯协议的学习

陌陌发展刚开始由于规模小,30-40W的连接数(包括Android后台长连接用户),也使用XMPP;由于XMPP的缺点:流量大(基于XML),不可靠(为传统固定网络设计,没有考虑WIFI/2G/3G/地铁/电梯等复杂网络场景),交互复杂(登陆需5-6次,尤其是TLS握手);XMPP丢消息的根本原因:服务端和客户端处于“半关闭”状态,客户端假连接状态,服务端有收不到回执;Server端连接层和逻辑层 […]

微信通讯协议的学习

微信协议概览 微信传输协议,官方公布甚少,在微信技术总监所透漏PPT《微信之道—至简》文档中,有所体现。 微信从2011年1月发布以来,在一年之内实现了上亿用户,千万级在线,在苹果中国区App Store月下载量排行第一。 腾讯把微信的成功总结为“三位一体”,即产品的精准,项目的敏捷,以及技术的支撑。 敏捷就是试错法,用最快的迭代速度不断追求卓越。敏捷是一种态度,允许发布前十分钟的变更,并给予产品 […]

MQTT协议的学习

MQTT简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议。它的设计思想是轻巧、开放、简单、规范,因此易于实现。这些特点使得它对很多场景来说都是很好的选择,包括受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT),这些场景要求很小的代码封装或者网络带宽非常昂贵。 MQTT协议是为大量计算能力有限,且工作 […]

WhatsApp通信协议的学习

WhatsApp以190亿美元的价格出售给了Facebook,特别引入注意的是该服务4.5亿活跃用户的公司只有32个工程师,以下内容是HighScalability创始人Tod Hoff分析的WhatsApp的高可靠架构。 信息源 需要注意的是, WhatsApp的整体架构并未公开,这里仅仅是从不同信息源中获取不同的片段。Rick Reed的讲座主要分享了使用Erlang实现单服务器200万连接数 […]

环信即时通讯的技术要点学习

即时通讯(IM)功能是APP的重要功能之一,而开发好移动IM却绝非易事。通常来说,IM技术选型至少要解决以下问题: 协议选型 IM服务器选型 对协议和服务器做相应修改,通常来说直接拿个标准协议和开源服务器是一定不能用到生产环境的 保证消息到达率,绝不丢消息 以上4点搞定后基本就有了一个可用的IM平台上。想更上一层楼,可以对电量和流量等做进一步优化,或者研究怎样支持百万级以上的用户。 协议选型 常用 […]