打开即时通讯服务器openfire的大门

摘要:
毫无疑问,为了对openfire有更深入的了解,我们还将深入openfire的源代码,尽可能多地了解美丽的细节。柳岩将通过服务器通知黄晓明该消息。下图显示了每个xmpp协议服务器的比较:名称平台开源协议Jack teacher评论说,openfirelinux、windows和macApache,一个非常开放的协议openfire,性能很高,单台机器可以实现超过30w的并发。Jabber2.x Linux和Windows GPL2协议是使用高效的C语言开发的。然而,目前他们并没有得到openfire和ejarberrd的良好维护。

1、什么是即时通讯

你现在最常用的软件是什么,如果我没有猜错,应该是QQ和微信,是的,他们就是即时通讯软件。

一个可以让你无时无刻,只要有网络就能够沟通的工具,就是即时通讯工具。那么本教程,我们主要以openfire为基础来讲解即时通讯服务器和客户端的实现。

毫无疑问,为了更深入的理解openfire,我们也会深入openfire源码,尽可能多的了解它的美丽细节。

2 即时通讯的核心概念

那么要实现类似QQ这样一个即时通讯系统,主要会涉及哪些方面呢?Jack老师来详细为你白话一下。

(1)、需要有服务器

首先,需要有服务器程序,服务器程序负责用户的登录、消息之间的转发、离线消息的存储等。

例如,柳岩发了一条消息给黄晓明(哇塞,好像他们没有半毛钱关系哈)。柳岩那条消息会通过服务器,告知黄晓明。根据不同的业务逻辑,黄晓明可以在不同时间收到该条消息,例如黄晓明和baby在一起,现在没有在线,那么这条消息会存入离线。如果黄晓明在线,那么服务器会立刻将消息发送给黄晓明。

话说,黄晓明的婚礼也太他妈贵了,Jack老师想有一天也有那么多钱,你想吗?想就,好好学习。

(2)、需要有客户端

这个很简单,没有类似QQ、微信这样的客户端,怎么发送消息给服务器呢。所以,即时通讯也需要有客户端。本教程,我们也会使用strophe库,给讲解客户端的实现,其他库实现客户端的原理一样。

(3)、客户端和服务器之间需要一种通讯协议。

服务器和客户端需要共同制定一种规则,例如“to:xiaoming”,表示发送消息给xiaoming,这种规则就叫做通讯协议。

QQ、微信都有自己的通讯协议,一个协议的制定要考虑很多因素,所以自己制定一种协议,会花费很多的时间,我们本套课程,使用的是已经有10几年历史的xmpp协议,xmpp协议是一种规范的协议,你可以在这里看到整个协议的文档http://xmpp.org/。

xmpp.org协议网站

3、沟通离不开协议 XMPP协议介绍

我们可以在官网(xmpp.org)看到xmpp协议,这个是xmpp基金会的网站,您可以从这里看到xmpp协议和xmpp的扩展。

总之,目前为止,您只需要知道xmpp是一种即使通讯协议就可以了,支持文本、视频、文件等的传输。

同时,这种协议很成熟,很多大公司都在使用,例如google。

4、xmpp协议例子

Xmpp协议是建立在xml的基础上的,所以,看起来,xmpp协议就像一个xml。

例如下面的xmpp协议,它其实就是一个xml文本。

<message from="11@myopenfire.com" to="22@myopenfire.com">
xxx</message>

5、通讯服务器应该有的功能。

即时通讯服务器应该有很多功能,我们这里总结如下:

1、私聊功能:就是用户之间进行私聊的功能。

2、组聊天功能:在一个组的用户能够进行彼此的功能,并且高效的聊天。

3、文件传输:现在的聊天工具都有文件传输功能吧。文件传输其实有离线传输,还有在线传输,用过qq的同学,自然知道他们是什么意思。

4、语音视频聊天:这个功能开发较为复杂,但是手机和电脑上的使用率都很高,所以服务器应该支持。

5、用户的在线与离线状态:服务器应该有维护用户在线与理想的状态。

6、注册功能:最好服务器应该有注册的功能。虽然QQ都是在网页端注册的,走的是http协议,但是一个即时通讯服务器有注册功能,可以是一个加分项目。不知道你理解这句话的意思没?老师耐心的给你讲一下,就是注册都是用xmpp协议来完成。

7、可以支持表情、图片传输:这个应该是标配吧。

8、服务器应该支持心跳包:心跳包可以保证在网络不好的情况下,客户端与服务器保持一个比较稳定的连接。

6、常用的XMPP服务器比较(横测)

下面是一些常用的xmpp服务器,每个服务器都有优点,但是我们强烈建议你使用openfire,在我们的实践中,openfire经过集群和优化,能够支撑上亿的客户端连接,如果舍得花钱买更多的服务器,那么可以扩充到更多。对于目前的情况来说,任何一个大中小型企业选择openfire,都是足够的了,因为短时间内,绝对不可能超过上亿的连接,几十、上百万就不错了。

下图是各个xmpp协议服务器的比较:

名字平台开源协议Jack老师备注
openfirelinux、windows、macApache,很开放的一种协议openfire性能较高,单台能够达到30w以上的并发量。集群后,可以无限扩展。代码结构设计很合理,插件式开发,扩展能力强。这也是《openfire教程网》讲解的服务器,这个服务器明白了,那么其他服务器的原理大同小异。
ejabberrdlinux、windows、mac
GPL2协议它有普通版和商业版,区别是商业版性能更高。但是要使用Erlang语言开发。访问本站的大多数同学应该都没有Erlang经验,如果选择学习这个服务器,对大家理解原理没有帮助。
jabberd 2.xlinux、windowsGPL2协议使用C开发,效率高,但是目前没有openfire、ejarbberrd维护好。且C语言开发难度大。
Tigaselinux、mac、windowsAGPL协议天生为集群设计,并发性非常高,每秒可以处理50w条消息,简单的集群就可以上千万人在线,但是学习难大。

免责声明:文章转载自《打开即时通讯服务器openfire的大门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇gprof的使用介绍Fish and Oh My Fish in Ubuntu下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Swoole从入门到入土(17)——WebSocket服务器[成员函数与配置选项]

这一节,我们重点了解websocket server的成员函数以及相关的配置选项。 1、成员函数 push:向 WebSocket 客户端连接推送数据,长度最大不得超过 2M。 SwooleWebSocketServer->push(int $fd, string $data, int $opcode = WEBSOCKET_OPCODE_TEXT,...

Linux| |对于UDP的学习

# 前序 UDP(用户数据报协议)没有连接的,是面向数据报的,是不可靠 # 套接字就是IP地址+端口号 IP地址:4字节 端口号:2字节,也就是说范围是0~65536 端口号分为 知名端口号 0--1023:http,ssh,ftp,telnet等一些协议端口号都是固定的,对于操作系统来说是不能对其进行分配的 一些固定的端口号 ssh服务器,使用22端口...

CentOS5.x、CentOS6.x 使用NFS及mount实现两台服务器间目录共享

一、环境介绍: 服务器:centos 192.168.1.225 客户端:centos 192.168.1.226 二、安装: NFS的安装配置:centos 5 : portmap:实现RPC(协议)的应用程序 yum -y install nfs-utils portmap centos 6(在CentOS 6.3当中,portmap服务由rpcbin...

web 阶段的一些简答题

1.jsp 9个隐含对象 2. jsp 4大域对象 3.mybatis 中 #{} %{ } 的区别于联系 4. Servlet容器默认是采用单实例多线程的方式处理多个请求的: 5.Cookie 与Session 的异同 6. 请描述对web 服务器的理解(Tomcat),请列举出tomcat7下的目录以及各个目录的作用 7. 请描述 servlet与st...

android环境下的即时通讯

首先了解一下即时通信的概念。通过消息通道 传输消息对象,一个账号发往另外一账号,只要账号在线,可以即时获取到消息,这就是最简单的即使通讯。消息通道可由TCP/IP UDP实现。通俗讲就是把一个人要发送给另外一个人的消息对象(文字,音视频,文件)通过消息通道(C/S实时通信)进行传输的服务。即时通讯应该包括四种形式,在线直传、在线代理、离线代理、离线扩展。在...

网站响应时间过长的原因及解决方法

遇到过类似问题,我认为有以下几个原因: 1、网站服务器故障维修(这种情况只能等段时间重新登录试试)2、网络连接不通(查看网线接口处是否插好)3、网站地址被和谐了(用代理) 4、本身网站程序卡死了(程序问题) 服务器网站响应时间过长的问题解决方法如下:1、机器的配置。包括服务器端与客户机端的硬件配置程度,同样的网络环境下,双核的服务器的运算能力肯定...