导读对于推送,IM服务器,目前可以使用一些厂家提供的SDK来实现,但是我们的老板又总是担心使用别人的SDK,假如别人的服务出现问题,或者别人偷看咱们的信息,那岂不是出现很大问题了


聊一聊xmpp的服务器openfire和测试客户端spark

1、什么是XMPP
这里说一下XMPP,我在前几节说的sdk汇总文章提到的部分推送,IM的SDK提供商用的是XMPP协议,当然也有是自己实现的协议的,例如腾讯。XMPP简单的来说,就是一个发送与接收之间定义的规则,不过这个协议和我们传统的协议有点不同,它不是二进制的方式的,也不是字符串的,而是一个XML格式的内容,相信大家都比较熟悉XML,xml的扩展性非常强大,XMPP也继承了它优良的传统,使得我们在通信中,可以更加容易定义自己的标志。
2、xmpp服务器openfire
    xmpp开源服务器有很多,我们这里介绍一下基于XMPP协议的服务器,Openfire。Openfire 是基于Jabber协议(XMPP)实现的即时通信服务器端版本,使用java来实现的,其官网是:http://www.igniterealtime.org/index.jsp
目前Openfire的版本是4.0.1,它可以部署在mac,windows和linux系统上。
这里我就以windows版本的服务器为例子,在官网下载好openfire后,直接点击安装,安装步骤按照我们平时安装软件那样就可以了,这里提示一点,如果安装成功后,openfire不会自动启动的话,那么 有可能是端口被占用了,xmpp一般使用的端口有5222、5223等,可以查看一下有没有被占用。

    如果安装后,没有自己启动的话,可以尝试手动点击start启动,一般安装好后需要我们对服务器进行配置,如果自己弹出了配置页面的话,可以跳过这一步,如果没有的话,可以点击 launch admin,如图

    进入配置页面后,会提示我们页面显示的语言,我们这里就选择简体中文,如图

    选择好语言后,我们需要对服务器进行设置,输入我们的域名\IP地址,如果需要加密 的话,这里需要配置加密的公钥和私钥等等,我这里选择默认的。如图

    配置好后,我们选择数据库的方式,这里说明一下,我们需要连接到一个已经安装好后的数据库的话,选择第一种方式,如果我们本地没有安装好,可以选择第二种,如图

    由于我这里是选择第一种方式,接着我们需要配置我们的ODBC连接方式,我这里的使用MYSQL的,输入数据库服务地址和数据库的名字,还有用户名和密码

    接着输入用户组里面的属性,我们这里选择默认的,如图

    输入管理员的账号和密码,这里一定要注意的,默认的管理员帐号和密码是admin和admin,如果需要修改成我们自己的密码的话,可以在这一步修改,但是一定要记住,不然的话,需要在数据库里面修改的,而且要以邮箱的形式来修改帐号。如图

    进行到这一步,服务器的配置算是完成了

    我们可以在管理平台上看到我们openfire的配置信息了,如图

    对于mac版本的安装,下载后点击安装,安装完成后,可能会不知道安装在哪里,我们可以打开偏好设置,要重新打开才有效的,然后打开openfire的按钮,如下图,

    这个时候,我们直接点击start openfire就可以打开我们mac版本的服务器,此外再次提示一下的就是,如果打不开openfire要检查里面的端口有没有被占用了。

3、测试客户端Spark
    这里我们直接用官网上的Spark来测试我们的实时信息,在官网下载好spark,点击安装,安装好后,我们需要注册一个帐号,注册帐号的步骤,如下图,这里需要注意的是服务器地址,这里的地址就是我们刚才输入的域名地址,我们可以输入服务器的IP地址,如果是本地测试的可以输入127.0.0.1或者所有域,或者域名,这个根据具体情况输入。
spark的下载地址http://www.igniterealtime.org/downloads/index.jsp#spark

    注册成功后,会自动弹回登录的页面的,我们输入帐号和密码就可以登录到相应的界面,并且会显示类似飞信的页面的,显示自己在线的,如图

4、测试群发信息
    这时我们登录后管理平台上,想利用后台群发一条信息到客户端,我们点击会话->工具->发送信息,然后输入我们的内容,例如hello.点击发送后客户端会收到hello,这时说明实时内容已经到达了。


免费提供最新Linux技术教程书籍,为开源技术爱好者努力做得更多更好:https://www.linuxprobe.com/

XMPP协议、IM、客户端互联详解的更多相关文章

  1. 第8章 应用协议 图解TCP/IP 详解

    第8章 应用协议 图解TCP/IP 详解 8.1 应用层协议概要 应用层协议的定义 TCP和IP等下层协议是不依赖上层应用类型.实用性非常广的协议.而应用协议则是为了实现某种应用而设计和创造的协议. ...

  2. HTTP协议 (六) 状态码详解

    HTTP协议 (六) 状态码详解 HTTP状态码,我都是现查现用. 我以前记得几个常用的状态码,比如200,302,304,404, 503. 一般来说我也只需要了解这些常用的状态码就可以了.  如果 ...

  3. WebSocket安卓客户端实现详解(三)–服务端主动通知

    WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 We ...

  4. WebSocket安卓客户端实现详解(一)–连接建立与重连

    http://blog.csdn.net/zly921112/article/details/72973054 前言 这里特别说明下因为WebSocket服务端是公司线上项目所以这里url和具体协议我 ...

  5. SSL协议之数据加密过程详解

    前言 总括: 原文博客地址:SSL协议之数据加密过程详解 知乎专栏&&简书专题:前端进击者(知乎)&&前端进击者(简书) 博主博客地址:Damonare的个人博客 生活 ...

  6. SVN的Windows和Linux客户端操作详解

    SVN的Windows和Linux客户端操作详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Windows客户端操作 1.安装SVN客户端 a>.去官网下载svn软件 ...

  7. TCP协议粘包问题详解

    TCP协议粘包问题详解 前言 在本章节中,我们将探讨TCP协议基于流式传输的最大一个问题,即粘包问题.本章主要介绍TCP粘包的原理与其三种解决粘包的方案.并且还会介绍为什么UDP协议不会产生粘包. 基 ...

  8. 安全超文本传输协议(HTTPS)详解

    一.概念与摘要 HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息.它使 ...

  9. HTTP协议缓存策略深入详解之ETAG妙用

    Etag是什么: Etag 是URL的Entity Tag,用于标示URL对象是否改变,区分不同语言和Session等等.具体内部含义是使服务器控制的,就像Cookie那样. HTTP协议规格说明定义 ...

随机推荐

  1. QQ群聊天记录文件分割

    嗯,如题 是个蛋疼物 目前QQ的聊天记录导出功能很让人郁闷 三种聊天记录格式的导出 1  TXT   没图 2  BAK  只能再导入QQ使用 3  MHT 有图有字,缺点是一旦聊天记录很多,文件体积 ...

  2. 2款好用的Web在线编辑器

    1.CKEditor FCKEditor 现在已经重新开发,并改名为 CKEditor. CKeditor是一个专门使用在网页上,开放源代码,高度可定制,跨平台的所见即所得文字编辑器,兼容于绝大部分的 ...

  3. Django 1.6 最佳实践: 如何正确使用 Signal(转)

    原文:http://www.weiguda.com/blog/38/ 如何正确的使用signal: 简单回答是: 在其他方法无法使用的情况下, 才最后考虑使用signal. 因为新的django开发人 ...

  4. JXTA+JavaFX实现的网络黑白棋测试地址

    http://www.qhdbaobao.com/dist/secondegg-reversi.html ——————————————————————————————————————————————— ...

  5. Javascript函数柯里化(curry)

    函数柯里化currying,是函数式编程非常重要的一个标志.它的实现需要满足以下条件,首先就是函数可以作为参数进行传递,然后就是函数可以作为返回值return出去.我们依靠这个特性编写很多优雅酷炫的代 ...

  6. printf函数重定向

    printf函数底层会调用fputc函数 /*重定向c库函数printf到USART1*/ int fputc(int ch, FILE *f) { /*发送一个字节数据USART1 */ USART ...

  7. HDU 4599 Dice (概率DP+数学+快速幂)

    题意:给定三个表达式,问你求出最小的m1,m2,满足G(m1) >= F(n), G(m2) >= G(n). 析:这个题是一个概率DP,但是并没有那么简单,运算过程很麻烦. 先分析F(n ...

  8. Odoo 开发者模式

    这里我们以Odoo V9介绍下Odoo的开发者模式: 进入开发者模式: 登录odoo系统后,点击右上角登陆账号下拉菜单,选择About,然后在弹出菜单里点击Activate the developer ...

  9. Libvirt 网络管理

  10. UVA1151

    //感觉刘汝佳老师的思维真的太厉害了orz /*摘录书上的一段话: 只需一个小小的优化即可降低时间复杂度:先求一次原图(不购买任何套餐)的最小生 成树,得到n-1条边,然后每次枚举完套餐后只考虑套餐中 ...