即时通讯服务服务器 ejabberd、jabber、jabberd、xmpp简介
Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Internet上应用,也可以在局域网中应用。
XMPP(可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。它在促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同。XMPP的技术来自于Jabber,其实它是 Jabber的核心协定,所以XMPP有时被误称为Jabber协议。Jabber是一个基于XMPP协议的IM应用,除Jabber之外,XMPP还支持很多应用。
Ejabberd是一款开源免费的Jabber/XMPP服务器,采用ErLang编写,具有跨平台的能力,支持Linux,window,Unix等多种平台,基于GPL v2许可发布。
Jabber/XMPP(Extensible Messaging and Presence Protocol)主要用于即时通信,Gtalk就是采用Jabber/XMPP协议开发的。基于 Jabber/XMPP协议通信需要服务器端和客户端,ejabberd就是作为Jabber/XMPP的服务端,而比较著名的Jabber客户端有 pidgin,spark(java版本的客户端)等。
业界有很多优秀的开源XMPP服务器,比如eJabberd、Openfire、Tigase、Jabberd2、Prosody,还有一些优秀的商业XMPP服务器,比如lsode、Jabber XCP等。在XMPP.ORG网站上可以看到完整的列表。
openfire使用搭建更加方便快捷,管理界面也更友好,可视化配置方便。
tigase功能更加强大丰富一些,tigase性能更好,支持集群横向扩展,可以支撑更大的用户量 (官网号称单机50w 集群百万)
选择: 如果你是想快速搭建,控制成本,用户量不多的情况下,完全可以选择openfire
如果你将面对更多用户(十万甚至百万级),并愿意话费时间人力成本进行部署调优,甚至二次开发的话,选择tigase准没错
软件功能
1、用户系统:用户注册、登录、添加好友、删除好友、好友列表、支持上传头像、可以修改个人信息、名称、性别、地区、签名、黑名单功能、拉入黑名单将无法收到对方的信息、查看好友当前地理位置。
2、聊天系统:发送文字、图片、语音、表情。语音聊天可以显示时长、未读状态,自动轮播未读语音;
3、群聊系统:建立房间、加入房间、删除房间、房间列表、群聊、屏蔽群消息功能、邀请、踢出好友(只有房主才有这个功能)。并有操作日志实时显示在房间中
4、附近人功能:根据筛选条件查看附近的人,查看用户时能显示位置
5、朋友圈:支持发送文本、图片、语音、视频或以上混合消息,支持好友进行赞、评论、转发、送礼物等操作,并且可以根据消息显示粉丝贡献值。
6、实现了发消息后,如接收方不在线,除了离线消息外,会自动推送通知,留了推送接口
7、提供如何和贵企业现有服务器现有用户系统整合的方案,使IM只是成为其中的一个模块,方案简单易用。
8、单台服务器能适应超20w以上大规模并发,并支持服务器集群,理论上可以支持上亿用户。
服务端比较
功能 | Openfire | Tigase | 视酷即时通讯系统(基于Tigase) |
网络框架 | Java的MINA | Java的NIO | |
单聊、群聊 | 支持 | 支持 | 支持并可以发送图片、语音、视频、文件等 |
离线推送 | 不支持 | 不支持 | 支持 |
消息回执 | 不支持 | 不支持 | 支持 |
聊天记录 | 不支持 | 不支持 | 支持 |
NoSQL存储 | 不支持 | 不支持 | 支持并已实现MongoDB存储 |
朋友圈 | 不支持 | 不支持 | 支持 |
服务器集群 | 支持但不稳定 | 支持 | 支持并可以通过增加机器横向拓展 |
用户在线数 | 150000 | 250000 | 300000 |
1.为什么弃用OpenFire?对Tigase做了哪些修改?
OpenFire推出较早,视酷的第一版本就是基于OpenFire的,但由于网络框架比较落后,不稳定,服务经常要重启,且并发性能差,没 有一款巨量用户的APP是用它的,研究良久后面选定了Tigase服务器(有巨量用户案例),Tigase推出晚,克服了Openfire好多缺点,性能 优越,我们所有的修改都做成了插件,这样当Tigase升级时,插件能照常使用。
2.系统采用什么框架?
系统采用的成熟的XMPP协议+CentOS6.5+Jdk1.8+mysql5.6+ mongodb3.0.1+Tigase7.0.2+Redis3.03+Nginx1.7.9, 服务端采用JAVA语言,如微信、陌陌均采用了XMPP协议
3.为何要用消息回执?
消息回执是XMPP的扩展协议,是保证消息100%送达的关键,Tigase本身不支持回执,我们做了扩展,如果APP商用,必须用它,否则丢包率非常严重,尤其在信号不畅时
4.Tigase的并发性能如何?
经过我们优化之后的性能能达到单台服务器并发20万用户以上,使用集群方案后理论上支持上亿用户同时在线,同时客户端源代码采用标准的XMPP协议,很容易支持其他服务器如ejabberd
5.出售的是源代码吗?
是的,不止如此,重要的是我们提供一整套的解决方案和技术支持。同时关键代码位置有注释,设计文档齐全
6.技术支持力度如何?
一般会把双方的技术人员拉至一个QQ群内,随时交流指导;技术支持至少三个月,长则一年
10.未来升级会加什么功能?
我公司的主业是一款大型移动互联网APP,正在加入音频群聊、视频直播功能,将来升级可给老客户最最优惠的价格
即时通讯服务服务器 ejabberd、jabber、jabberd、xmpp简介相关推荐
- 基于开源jabber(XMPP)架设内部即时通讯服务的解决方案
原文地址:基于开源jabber(XMPP)架设内部即时通讯服务的解决方案 作者:高傲的活着 Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Inte ...
- go 连接服务器 并存放图片_Go 在马蜂窝即时通讯服务建设中的实践
即时通讯(IM)功能对于电商平台来说非常重要,特别是旅游电商. 从商品复杂性来看,一个旅游商品可能会包括用户在未来一段时间的衣.食.住.行等方方面面:从消费金额来看,往往单次消费额度较大:对目的地的陌 ...
- QIP.ru即时通讯服务3300万明文密码被泄
QIP.ru是一家主要在俄罗斯本土运营的即时通讯服务提供商,但最近曝出了其3300万用户明文密码被黑客盗取的大事件.外媒SoftPedia从网络安全初创企业HEROIC得到了一份样本数据,后者的主要业 ...
- OpenIM:如何打造安全可靠的即时通讯服务
即时通讯作为移动应用的常用组件,开发起来却并不简单,除了需要研究通讯协议,保证安全性,还要应对复杂的移动网络情况,以提供高可用性的服务.OpenIM是阿里巴巴推出的,集成于阿里百川项目中的移动端 IM ...
- 使用tomcat方式实现websocket即时通讯服务端讲解
使用tomcat方式实现websocket即时通讯服务端讲解 第一种方案:使用Tomcat的方式实现 tomcat版本要求:tomcat7.0+.需要支持Javaee7 导入javeee-api的ja ...
- IM即时通讯服务将成联结谷歌、雅虎纽带(图)
腾讯科技讯 北京时间6月17日消息,据国外媒体报道,即时通讯只是谷歌-雅虎合作中的"小不点儿",但它可能成为未来的增长引擎,使两家公司成为"永远的朋友". 尽管 ...
- 【什么是iMessage推送,im群发】苹果推iMessage是苹果公司为其设备用户提供的即时通讯服务
iMessage是苹果公司为其设备用户提供的即时通讯服务,拥有一系列强大的功能和特点.然而,至今为止,苹果并未提供官方的群发部署功能.iMessage主要被设计为点对点的通信工具,即用户可以与一个或多 ...
- Netty实战 IM即时通讯系统(一)IM系统简介
## Netty实战 IM即时通讯系统(一)IM系统简介 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 实战: 客户端和服务端双向通信 数据传输载体ByteBuf介 ...
- ActiveMQ 即时通讯服务 入門指南及淺析
转:http://www.cnblogs.com/hoojo/p/active_mq_jms_apache_activeMQ.html 一. 概述与介绍 ActiveMQ 是Apache出品,最流行的 ...
- ActiveMQ 即时通讯服务 浅析
一. 概述与介绍 ActiveMQ 是Apache出品,最流行的.功能强大的即时通讯和集成模式的开源服务器.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provide ...
最新文章
- spring boot 整合mybatis 无法输出sql的问题
- Redis详解(八)------ 主从复制
- windows下安装mongodb步骤
- Could not autowire field: private javax.servlet.http.HttpServletRequest
- 语义化,让你的网页更好的被搜索引擎理解
- Python_基础_3
- Val编程-读取汉字
- 构造函数还是静态工厂方法?
- 如果在这样的环境中写代码,会不会很高效
- Nordic Collegiate Programming Contest (NCPC) 2016
- Android学习之简单地使用碎片
- GCC: libgcc的用途以及交叉编译
- 6.824 2020 视频笔记五:Go Concurrency
- mysql-5.7.12安装
- Openlayers layer 切换底图
- windows下命令行发送邮件blat.exe
- PDF文本内容批量提取到Excel
- java 1.8 64_JDK 1.8 64位 下载 安装 配置
- three.js将fbx文件转为glb文件,并且压缩处理
- 计算机游戏锁怎么打开,键盘锁住了怎么解锁_解锁键盘步骤操作一览