基于Openfire+Spark构建IM实时交流平台
沈奎林1, 杜瑾2
1 南京大学图书馆 南京 210093
2 南京陆军指挥学院作战实验中心 南京 210045
摘要

分析即时通讯交流工具在国内外图书馆应用现状,指出目前各种IM工具的不足之处,并提出以开源软件Openfire+Spark构建本地IM实时交流平台的解决方案。介绍Openfire和Spark软件的功能特点,指出技术思路,同时以南京大学图书馆的IM实时交流平台的搭建为例说明实践过程和应用效果。

关键词: 开源; Openfire; Spark; 即时通讯; 实时交流; 参考咨询
中图分类号:G250 TP311
Using Openfire+Spark to Build IM Real-time Communication Platform
Shen Kuilin1, Du Jin2
1 Nanjing University Library, Nanjing 210093, China
2 Operational Research Center,Nanjing Army Command College,Nanjing 210045,China
Abstract

This paper surveys and analyses the situation of IM(Instant Messaging) in domestic and foreign libraries at present, then points out the shortcomings of the current IM tools. The solution depending on Openfire+Spark is proposed to build IM real-time communication platform.This paper introduces the functions and features of the open source software Openfire and Spark,and the technical ideas.Based on the IM real-time communication platform of Nanjing University Library,it illustrates the application process and the practice effect.

Keyword: Open source; Openfire; Spark; Instant messaging; Real-time communication; Advisory
1 引 言

即时通讯(Instant Messaging,IM)通常被叫做IM,是两个人通过网络实时地进行同步交流的软件[ 1],也是目前国内外互联网用户使用率最高的网络软件。IM广泛应用于个人、企业、商务、专业定制等领域。图书馆界也不例外,为数众多的图书馆使用了IM作为自己的一项服务工具。根据叶佩珍2010年1月份的统计,开展IM咨询服务的国外图书馆达到1 011家[ 2],而调查的国内535家图书馆中也有117家提供了IM咨询服务,这两个数字还在一直增长。Schmid认为“IM是以用户为中心的,它在图书馆用户之间建立了联系”[ 3]。基于IM应用的广泛性和便利性,有必要对IM进行深入研究,探讨IM实时交流平台的实现思路和方法,继而利用这个平台提升图书馆虚拟参考咨询的服务能力。

2 IM应用的需求分析及技术思路
2.1 当前IM应用现状和不足之处

(1)IM在国内外图书馆的应用

国外图书馆使用IM服务有将近10年的时间。截止2010年1月20 日,提供IM咨询的图书馆有1 011家,其中美国939家,其他国家和地区72家[ 2]。国外图书馆开展IM咨询所选择的IM软件主要有Meebo、AIM、MSN、Yahoo!、GTalk、ICQ、Jabber及LibraryH3lp等。

国内图书馆IM咨询服务的实践稍晚于国外。叶佩珍于2010年1月24-27日展开了调查。此次调查的图书馆共有692家,其中157家图书馆的主页无法打开,在535家可打开主页的图书馆中,共有117家图书馆开展了IM咨询服务,而根据王宁宁2008年6月的调查,当时开展IM咨询服务的图书馆仅有近50家[ 2]。近几年利用IM工具开展咨询服务的图书馆快速增加。国内常用的IM工具有腾讯QQ、MSN、网易泡泡、阿里旺旺等。

(2)IM应用的现状与不足之处

IM的优点和在图书馆中的使用有很多文献进行过介绍,不再赘述。而这里要讨论的是当前各个图书馆利用各种IM作为交流咨询工具的不足之处。

①各种IM之间交互通信的问题。目前绝大多数IM都不能互相通信,用户使用各种不同的IM客户端,这给充当咨询端的人员带来很多不便。

②稳定性和速度。当前使用腾讯QQ、MSN、GTalk等IM工具的用户很广。一大部分是国外提供的服务,在使用这些工具时,由于内部或者外部网络的问题或者IM提供方自己服务器出现问题时,IM就不能实现正常稳定的运行。著名的微软切断五国MSN服务的事件就是一个很好的反例[ 4]

③内部封闭问题。有的单位、学校会封闭使用QQ等聊天工具。这就无法利用这些IM工具进行交流和咨询的服务。

④安全问题。当前的很多IM工具成了传播病毒的载体,包括病毒传播、信息泄露、黑客攻击、键盘记录、本地文件扫描破解、信息窃听、安全漏洞、协议缺陷等。很多用户遇到过网络诈骗、木马文件等。IM工具的安全性不容乐观。

⑤广告充斥。很多IM工具商为了自己的利益,在IM客户端放置了很多广告进行轮播,给用户的使用带来了很多不便。如果图书馆使用这样的IM提供咨询,不断弹出的广告会给图书馆自身造成不好的印象。

⑥Web IM的使用。这是目前很流行的一种服务方式,用户可以不登录客户端,仅仅利用网页就可以进行咨询交流。目前提供优质服务的有Meebo、LibraryH3lp,但是由于服务器设在国外,在国内使用中的速度和稳定性堪忧。国内的Meebo经常不能访问,不能正常提供服务。

⑦费用问题。各IM公司推出的企业版IM交流服务平台比较稳定、可定制,功能强大。但是费用很高,包括软件费用和维护费用。目前能负担起的图书馆不多。

鉴于这种情况,图书馆技术人员应该立足于利用自身的力量来建设图书馆自己的综合IM交流服务平台。

2.2 系统实现技术思路

要在图书馆内部实现自己的实时交流平台,硬件的需求必不可少,在校内服务,一台服务器即可满足需求。本文所需要的软件平台必须是稳定的、免费的,这样就需要使用开源软件。经过对国内外开源软件的调查,笔者发现Openfire、Spark及其插件联合使用完全可以满足本文的需要。

笔者要实现的服务平台的架构如图1所示:

图1 Openfire服务结构图

利用Openfire+Spark+Plugins,通过合理配置和设置,就能够构建稳定安全的图书馆IM实时交流平台,以方便图书馆内部交流和为广大读者提供全面的实时咨询服务。

3 系统实现过程

笔者以南京大学图书馆的IM服务系统为例进行实践,过程如下:

3.1 相关软件的介绍

(1)Openfire是遵从GPL协议的开源软件,是用Java开发的实时协作服务器。它采用了开源的XMPP协议来开发即时通讯服务器。由于是采用开放的XMPP协议,可以使用各种支持XMPP协议的IM客户端软件登录服务。可以使用它轻易地构建高效率的即时通讯服务器。Openfire安装和使用都非常简单,并利用Web进行管理,单台服务器可支持上万并发用户[ 5]

(2)Spark是一个开源的、跨平台的即时通讯客户端软件,可以应用在各种商业和组织机构中。它内建了群组聊天、电话集成,又有很强的安全性。它还给终端用户提供了一些人性化的服务,比如拼写检查、群组聊天室的书签标注和选项卡式的对话窗口。配合开源的Openfire,Spark非常容易部署和使用[ 6]

(3)插件。在这个开源项目中,项目团体和其他爱好者制作了很多提供给Openfire使用的插件,非常丰富和实用。

3.2 系统设计和结构

安装系统之前,先要对系统做详细设计。交流平台的用途有两个:馆内员工交流工作、互相帮助解决咨询问题;提供咨询服务。系统设立一个管理员,对系统的运行情况做监控,并进行系统设置、插件更新、数据备份等工作;要针对咨询问题设立多个咨询员分别管理不同学科和常见问题的咨询;最重要的是按照读者需求提供多种方式使用交流平台,分别是安装Spark客户端、使用读者自己常用的IM工具、使用Spark Web客户端登录、使用图书馆页面上提供的Web IM。基本的发送消息流程如图2所示。

图2 发送消息流程图

3.3 实现过程

Openfire+Spark是跨平台的,支持多版本操作系统。为了方便使用和维护简单,本文采用了支持Windows的版本。服务器是惠普380 G6,操作系统是Win⁃dows Server 2003企业版,数据库采用的是MySQL5.15,Java开发环境是JDK/JRE1.6,Web服务器采用的是Apache2.2和Apache Tomcat。

(1)Openfire的安装与配置

安装Openfire之前,先安装Java的JRE环境,也可以下载包含JRE的Openfire文件。从网站http://www.igniterealtime.org/ 下载最新版本的Openfire,因为本文使用的是Windows Server,所以下载对应的Windows版本。下载的文件是个可执行文件,双击安装,第一步选择简体中文,其他按照默认设置一步步安装即可。最后一步选择执行Openfire,界面如图3所示:

图3 Openfire运行界面

Openfire支持完全的Web配置。直接点击图3界面中的Launch Admin即可开始通讯服务器的配置。登入管理界面即开始配置向导。语言选择为简体中文;服务器设置保持默认即可;数据库设置里面有两个选择,标准数据库连接和嵌入的数据库。笔者选择标准数据库连接,因为本文要用MySQL数据库,这里填入服务器的IP或者域名、选择建好的数据库名、数据库的用户名和密码,这样就可以用MySQL作为数据库服务器;特性设置里面保持默认即可;管理员账户为admin,只要填入电子邮箱和设置密码即可;最后一步是安装完成。这样就可以登录到管理控制台。在这个控制台里可以对服务器、用户、分组、插件等功能做设置。管理控制台的界面如图4所示:

图4 Openfire管理控制台界面

(2)Spark的安装与配置

从http://www.igniterealtime.org/projects/spark/下载Spark的最新版本,选择Windows版本。Spark的安装过程比较简单,登录的时候服务器地址选择安装Openfire时设置的IP或域名即可。Spark是个IM客户端,具备了几乎一切即时通讯工具的功能。利用Spark菜单的Plugin功能,可以得到很多实用插件,比如拼写检查、即时翻译等功能。

Spark最吸引人的一个功能就是可以整合很多第三方IM账户,可以让用户和MSN、Yahoo、ICQ、GTalk等IM用户互相通信,这个特性解决了各种IM之间交互通信的问题。整合国内的QQ、人人网IM等还在测试阶段,不能正式使用,因为QQ等是采用封闭协议的,还有待进一步完善。

Openfire即时通讯服务器所需要的几乎所有的插件都可以从http://www.igniterealtime.org/projects/openfire/plugins.jsp下载。互相通信这个功能需要的插件是Gateway.jar。把这个文件复制到Openfire/Plugins文件夹下或者从Openfire控制台插件标签里直接上传部署,重启Openfire服务即可。在Openfire后台即可看到Gateways选项,可以选择需要整合进来的其他IM。这样登录Spark后,就可以登录MSN等账号。效果如图5所示,这里登录了MSN、GTalk、ICQ、AOL等,使用非常方便。

图5 Spark整合第三方IM工具

(3)使用Web界面登录Spark

从http://www.igniterealtime.org/downloads/下载Sparkweb包并解压,部署在Web服务器中即可从地址栏访问,进行Web界面的Spark使用。这个比较简单,这里不再详述。

(4)实现Web IM功能

有很多读者不喜欢为了咨询一个问题去登录IM客户端,或者登录IM不方便等原因,只是想很快捷地咨询问题。Meebo能很好地实现这个功能,文献 [7]详细讨论了这个实现方法。但是Meebo服务器在国外,由于稳定性和中文支持能力及聊天记录不能保存的问题,在目前网络环境下不太适合国内用户使用。这个功能完全可以利用Openfire的Fastpath插件实现。

首先笔者在http://www.igniterealtime.org/projects/openfire/plugins.jsp下载Fastpath Service(Fastpath.jar文件)和 Fastpath Webchat(Webchat.war文件)。把Fastpath.jar按照前文所述方法部署启用即可。这样Openfire就能支持Web IM功能。Webchat.war是用Java编写的Web页面,这是个打包JSP文件。本文需要安装Apache Tomcat来支持JSP的运行。安装好Tomacat后在后台管理界面部署Webchat.war文件即可。然后可以利用浏览器来访问,本例测试地址为http://127.0.0.1:8080/webchat/,这个插件功能十分丰富,支持咨询端按部门分组、可以设置在线离线图片显示等,读者可以按照咨询的问题分别点击不同的咨询员。使用效果如图6所示:

图6 Web IM的样例和咨询交流场景

图书馆技术人员可以将图6左边的在线图片修改为本单位的,并可以嵌入到其他页面,这样方便读者来使用。

这里需要说明的是本系统是简体中文版,很容易部署和设置。但是Openfire的插件大多是英文版本,可能会给使用带来一些不便。Openfire+Spark是开源软件,相信会有越来越多的国内开源软件爱好者加入其中,中文插件将会越来越多。

4 即时交流平台的应用效果

本文所采用的软件都是开源软件,不涉及商业信息在其中,可以完全看作是绿色的,有能力的图书馆完全可以修改源代码,以使整个平台更加个性化和本地化。

本IM实时交流平台搭建完成后,在图书馆员工和部分学生读者中展开了内部测试,反响良好。特别是因为服务器在本地,不受其他网络因素的影响,能够很稳定地在图书馆内部部门之间、个人之间架起畅通的交流平台,更能为读者提供一个开放的、具有良好体验的咨询平台。Spark提供了多种IM工具的整合,照顾到了多数读者的需求,即使外部网络暂时不通等情况,也不影响图书馆为广大师生员工提供正常的咨询服务和交流。

正是由于采用开源软件、服务器在本地、主要用在校园网等特性,使得图书馆利用各种IM作为交流咨询工具的不足之处都得到了解决,诸如稳定性和速度、内部封闭问题、安全问题、广告充斥、Web IM的使用、租用线路和服务的费用等。

5 结 语

Openfire+Spark是基于Java编写的开源软件,在很多人的共同努力下,功能日益丰富,稳定安全。笔者在南京大学图书馆实现了基于Openfire+Spark的IM实时交流平台,得到了广大师生的支持,具有良好的实践意义。图书馆同仁应该尽可能多地利用开源软件来建设数字图书馆,图书馆技术人员应该参与到其中去,定制更加适合自己图书馆特色的富有个性化的IM实时交流咨询平台,提升图书馆的服务能力和社会影响。

The authors have declared that no competing interests exist.

作者已声明无竞争性利益关系。

参考文献
[1] American Library Association. Instant Messaging[J]. Library Technology Reports, 2006(7-8): 45-51. [本文引用:1]
[2] 叶佩珍. 国内外IM咨询服务发展现状及趋势分析[J]. 现代情报, 2010, 30(7): 83-86. [本文引用:3]
[3] Schmidt A. 10 Points on IM in Libraries[EB/OL]. (2005-10-23). [2011-03-28]. http://www.walkingpaper.org/212. [本文引用:1]
[4] 吴珍. 由断网看IM(即时通讯)[J]. 信息安全与通信保密, 2009(7): 31. [本文引用:1]
[5] Ignite Realtime: Openfire Server[EB/OL]. (2011-03-02). [2011-03-29]. http://www.igniterealtime.org/projects/openfire/. [本文引用:1]
[6] Ignite Realtime: Spark IM Client[EB/OL]. (2011-03-25). [2011-03-30]. http://www.igniterealtime.org/projects/spark/. [本文引用:1]
[7] 沈奎林, 杜瑾. 基于Meebo建设图书馆实时咨询系统[J]. 江西图书馆学刊, 2011, 41(1): 51-54. [本文引用:1]