openfire安装配置完全教程
Java領(lǐng)域的IM解決方案
Java領(lǐng)域的即時(shí)通信的解決方案可以考慮openfire+spark+smack。
?
Openfire是基于Jabber協(xié)議(XMPP)實(shí)現(xiàn)的即時(shí)通信服務(wù)器端,最新版本是3.8.1
可以到http://www.igniterealtime.org/downloads/index.jsp下載(分為windows和linux版本)
可以到http://www.igniterealtime.org/downloads/source.jsp下載源碼,方便二次開(kāi)發(fā)插件。
?
Spark是即時(shí)通信客戶端。同樣在上述地址下載,最新版本是2.6.3
Spark支持聊天,會(huì)議,文件收發(fā),截屏,連接msn等功能。
?
如果是想支持?語(yǔ)音,視頻,則必須
不能安裝?Online版本,必須安裝Spark完整版本。
下載Openfire3.6.4版本及red5插件
?
Smack是即時(shí)通信客戶端編程庫(kù),目前我已測(cè)通jsp使用smack的API向openfire注冊(cè)用戶發(fā)送消息,并且可以通過(guò)監(jiān)聽(tīng)器獲得此用戶的應(yīng)答消息。
通過(guò)Smack向msn用戶和QQ用戶,gtalk用戶發(fā)送消息應(yīng)該也可以實(shí)現(xiàn),關(guān)于向gtalk用戶發(fā)送消息的例子較多。
?
第二章?安裝openfire
此處以windows版本(ZIP)版本進(jìn)行演示。
將ZIP版本解壓后,將”openfire”文件夾拷貝到“D:\xtomchat”目錄。
然后打開(kāi)“D:\XtomChat\openfire\bin\openfire.exe”,啟動(dòng)后,點(diǎn)擊“langch admin”,根據(jù)提示進(jìn)行安裝。
?
安裝前,首先在本地MYSQL中新建xtom_chat數(shù)據(jù)庫(kù)(utf8編碼)。
然后安裝過(guò)程中手動(dòng)選擇MYSQL,數(shù)據(jù)庫(kù)URL串填寫(xiě):
jdbc:mysql://192.168.1.146:3306/xtom_chat?rewriteBatchedStatements=true
?
安裝過(guò)程中域名默認(rèn)為本地計(jì)算機(jī)名稱,此值不好用,可更改為IP地址或真實(shí)公網(wǎng)域名。
如果無(wú)法登錄管理后臺(tái):則在ofuser數(shù)據(jù)表中,更換encryptedPassword字段的值為“36361c6a3f353bf245021f896fb138fe02c0b7612e9fcd1f”,則
用戶名為admin,密碼為”123456”。
?
安裝spark客戶端
?
安裝程序?yàn)?span lang="en-us">spark_2_5_8.exe,安裝過(guò)程全部默認(rèn)即可。
下面是登錄界面:
?
?
登錄時(shí)可使用openfire中創(chuàng)建的帳號(hào),也可以點(diǎn)(A)帳戶注冊(cè)新帳號(hào),服務(wù)器需設(shè)置為openfire的域名地址即上面安裝的192.168.1.116,下面是登錄成功界面:
?
關(guān)于spark客戶端的具體功能就不介紹了,下面介紹openfire配置msn網(wǎng)關(guān)及spark如何連接msn,以及red5視頻的配置方式。
?
?
======================WHB以下章節(jié)尚未進(jìn)行測(cè)試=======================
配置msn網(wǎng)關(guān)
4.1?服務(wù)端配置msn網(wǎng)關(guān)
?
將gateway.jar插件包(可網(wǎng)上下載)復(fù)制到openfire的plugin目錄下,如:
C:\Program Files\Openfire\plugins,如果openfire安裝到別的目錄請(qǐng)找到對(duì)應(yīng)的目錄,把gateway.jar復(fù)制過(guò)去。停止openfire,重新啟動(dòng)并登錄后,見(jiàn)下面的頁(yè)面,多出了一個(gè)gateways的標(biāo)簽頁(yè):
?
?
點(diǎn)Gateways,找到MSN Messagers,勾選,然后點(diǎn)“選項(xiàng)”,見(jiàn)下圖:
?
?
以上默認(rèn)的配置不用修改,點(diǎn)“測(cè)試”,顯示:
?
?
點(diǎn)“測(cè)試連接”,顯示測(cè)試成功。(右側(cè)將顯示綠色背景的文字提示測(cè)試成功)
?
4.2 spark客戶端設(shè)置msn帳號(hào):
?
啟動(dòng)spark,登錄后,spark窗口的右上多出一個(gè)灰色的蝴蝶,見(jiàn)下圖:
?
?
點(diǎn)這個(gè)蝴蝶,然后選擇“輸入登入資訊”,顯示下面的窗口:
?
?
在這里輸入msn的用戶和口令,然后保存,稍后片刻,spark將從msn上獲取用戶列表,最后顯示下面的msn好友列表:
?
?
?
這時(shí)可以選擇一個(gè)在線用戶聊天了,spark還支持文件傳輸,截屏,語(yǔ)音,視頻等。
?
Red5視頻配置
| ? | redfire插件下載地址: http://code.google.com/p/redfire/downloads/list 搜索框里輸入red5,或者直接打開(kāi): http://code.google.com/p/redfire/downloads/detail?name=red5.war&can=2&q= |
| ? | ? |
| ? | 解壓后將red5.war放到openfire的plugins下;?重啟openfire 通過(guò)訪問(wèn):http://127.0.0.1:9090/red5 ? 下載redfire的spark插件 |
| ? | ? |
| ? | ? |
| ? | ? |
?
點(diǎn)”here”會(huì)下載red5-plugin.jar,直接保存在Spark\plugins目錄下,重新啟動(dòng)spark。
?
將red5.war復(fù)制到Openfire\plugins,如果openfire是在運(yùn)行狀態(tài),一會(huì)會(huì)在這個(gè)目錄下自動(dòng)部署red5.war(在此目錄下自動(dòng)生成red5目錄)。安裝成功后,openfire的管理頁(yè)面會(huì)多出一個(gè)red5標(biāo)簽,服務(wù)端不需要做任何改動(dòng)。
??上一步驟部署了red5后,需要停止openfire并重新啟動(dòng),啟動(dòng)完成后,訪問(wèn)http://127.0.0.1:7070/red5/?,顯示一個(gè)red5的html首頁(yè),下拉到頁(yè)面最下面,找到spark plugin
點(diǎn)”here”,會(huì)下載red5-plugin.jar,直接保存在C:\Program Files\Spark\plugins目錄下,重新啟動(dòng)spark。
在spark中右鍵點(diǎn)一個(gè)人,會(huì)出現(xiàn)幾個(gè)菜單其中View Destop Screen和Publish Desktop Screen是相關(guān)聯(lián)的,如果A用戶用Publish Desktop Screen發(fā)布了自己的桌面,B用戶選擇A用戶,右鍵選擇上一個(gè)圖中的View Desktop Screen,則B用戶可看到A用戶的計(jì)算機(jī)桌面。在http://wpy.com:7070/red5頁(yè)面上有一個(gè)功能和這個(gè)類似,To publish是發(fā)布自己的桌面,To Viewer是別人觀看自己發(fā)布的桌面,多人發(fā)布是什么效果沒(méi)有具體測(cè)試。可以自己發(fā)布然后觀看自己的桌面(效果有點(diǎn)像兩個(gè)鏡子對(duì)照,會(huì)出現(xiàn)層層窗口嵌套的現(xiàn)象),當(dāng)選擇一個(gè)人,右鍵選擇Add/Remove Video Roster后,可進(jìn)行?視頻聊天,可以加多個(gè)人進(jìn)行視頻,每選擇一個(gè)熱人,然后點(diǎn)Add/Remove Video Roster,就可以將這個(gè)人加入到視頻中或者從視頻中移除,下面是視頻頁(yè)面(我沒(méi)裝攝像頭),可以看出一個(gè)頁(yè)面中可以顯示多人視頻,如果其他人也裝了spark,估計(jì)也能看到多人視頻的效果(猜測(cè),沒(méi)有測(cè)試),
搞了好幾天才把這東西搞明白。今天終于搞定了。其中的關(guān)鍵就是SparkWeb依賴于Red5。但是在http://www.igniterealtime.org/downloads/index.jsp的下載頁(yè)面又找不到Red5的下載。包括openfire的插件下載頁(yè)面http://www.igniterealtime.org/projects/openfire/plugins.jsp上也找不到Red5的下載。估計(jì)需要到red5的官網(wǎng)上下載,但是我沒(méi)有去下載。還是在igniterealtime的網(wǎng)站上找到了for openfire的red5插件。下載地址http://www.igniterealtime.org/projects/openfire/plugins-beta.jsp。下載那個(gè)red5.war。之后的事情就簡(jiǎn)單了。
????將red5.war放到openfire的plugins目錄下,然后啟動(dòng)openfire,它會(huì)自動(dòng)解壓red5.war。解壓完成后能看到red5/sparkweb目錄,以及一些其他的目錄。然后還需要配置才能使用。進(jìn)入openfire的管理控制臺(tái),即啟動(dòng)openfire后點(diǎn)擊Launch Admin打開(kāi)頁(yè)面,輸入admin/admin進(jìn)入。打開(kāi)“服務(wù)器設(shè)置”——〉“HTTP綁定”,將兩個(gè)選項(xiàng)分別啟用及enabled。然后注意HTTP綁定的端口,默認(rèn)是7070。保存設(shè)置后重起openfire就OK了。通過(guò)瀏覽器打開(kāi)http://[openfire的IP]:7070/red5/sparkweb/就看到了登陸界面了。輸入openfire的用戶的用戶名及密碼就等到到openfire了。
????安裝完red5插件后,openfire的管理控制臺(tái)中會(huì)增加一個(gè)red5的配置頁(yè),保持默認(rèn),什么都不用改。
????另外,在red5/sparkweb下的文件,看起來(lái)非常熟悉,就是從igniterealtime網(wǎng)上下載的Sparkweb的結(jié)構(gòu)。所以可以下載最新的Sparkweb替換。
?
?
?
?
5.2 spark客戶端配置視頻插件
?
在spark中右鍵點(diǎn)一個(gè)人,會(huì)出現(xiàn)幾個(gè)菜單:
?
?
?
其中View Destop Screen和Publish Desktop Screen是相關(guān)聯(lián)的,見(jiàn)下圖:
?
?
?
如果A用戶用Publish Desktop Screen發(fā)布了自己的桌面,B用戶選擇A用戶,右鍵選擇上一個(gè)圖中的View Desktop Screen,則B用戶可看到A用戶的計(jì)算機(jī)桌面。在http://bzwang.tzsoft.com:7070/red5頁(yè)面上有一個(gè)功能和這個(gè)類似,見(jiàn)下圖:
?
?
?
To publish是發(fā)布自己的桌面,To Viewer是別人觀看自己發(fā)布的桌面,多人發(fā)布是什么效果沒(méi)有具體測(cè)試。可以自己發(fā)布然后觀看自己的桌面(效果有點(diǎn)像兩個(gè)鏡子對(duì)照,會(huì)出現(xiàn)層層窗口嵌套的現(xiàn)象),下面是自己發(fā)布自己的桌面并觀看自己的桌面的效果:
?
?
?
當(dāng)選擇一個(gè)人,右鍵選擇Add/Remove Video Roster后,可進(jìn)行?視頻聊天,可以加多個(gè)人進(jìn)行視頻,每選擇一個(gè)熱人,然后點(diǎn)Add/Remove Video Roster,就可以將這個(gè)人加入到視頻中或者從視頻中移除,下面是視頻頁(yè)面(我沒(méi)裝攝像頭),可以看出一個(gè)頁(yè)面中可以顯示多人視頻,如果其他人也裝了spark,估計(jì)也能看到多人視頻的效果(猜測(cè),沒(méi)有測(cè)試),見(jiàn)下圖:
?
?
?
使用smack開(kāi)發(fā)即時(shí)通信功能
?
可以使用smack開(kāi)源產(chǎn)品開(kāi)發(fā)與即時(shí)通信用戶交互的功能,這樣我們可以使用系統(tǒng)來(lái)模擬一個(gè)openfire的用戶來(lái)向其他用戶發(fā)送消息,因而可以使應(yīng)用系統(tǒng)產(chǎn)生的業(yè)務(wù)消息實(shí)時(shí)傳遞給即時(shí)通信用戶,例如系統(tǒng)向某用戶發(fā)送“有新的請(qǐng)假單需要您審批”,如果用戶開(kāi)啟了spark客戶端,則spark客戶端會(huì)實(shí)時(shí)接收此消息。
Smack可從網(wǎng)上下載,目前最新版本為smack_3_1_0.zip,將此文件里四個(gè)smack開(kāi)頭的jar包放到自己的WEB應(yīng)用的WEB-INF\lib目錄,使用下面的jsp文件進(jìn)行測(cè)試:
下面是測(cè)試向spark用戶suqi發(fā)送消息的頁(yè)面代碼:
?
<%@ page contentType="text/html;charset=UTF-8"%>
?
<%@ page import="org.jivesoftware.smack.*"%>
<%@ page import="org.jivesoftware.smack.packet.*"%>
?
<%
?
?? //以下可以通過(guò)程序向spark帳號(hào)發(fā)信息,但沒(méi)有測(cè)通想msn帳號(hào)發(fā)信息
?? XMPPConnection connection = new XMPPConnection("bzwang.tzsoft.com"); //openfire服務(wù)器的主機(jī)域名
?? // ConnectionConfiguration connectionConfig = new ConnectionConfiguration( "messenger.hotmail.com",1863,"messenger.hotmail.com");
?? //? XMPPConnection connection = new XMPPConnection(connectionConfig);
?? connection.connect();//先連接服務(wù)器
?? try
?? {
?????? connection.login("abao", "abao");//使用openfire的注冊(cè)用戶登錄openfire服務(wù)器
?????? ?? System.out.println("登錄成功!");
?????? ?? //createChat的第一個(gè)參數(shù)一定要帶域名(suqi@bzwang.tzsoft.com),否則會(huì)話失敗
?????? ?? Chat chat = connection.getChatManager().createChat("suqi@bzwang.tzsoft.com", new MessageListener()
?????? ?? //Chat chat = connection.getChatManager().createChat("baozhengw9999%hotmail.com@msn.bzwang.cmissoft.com", new MessageListener()
?????? ?? {
?????? ?????? public void processMessage(Chat chat, Message message)
????????????? ?? {
????????????? ?????? //如果不用connection.disconnect()斷開(kāi)連接,這里可以監(jiān)聽(tīng)回復(fù)信息
???????????????????? ?? System.out.println("Received message: " + message.getBody());
????????????? ??? }
?????? ??? }
????????????? );
?????????????
????????????? System.out.println("發(fā)送消息....");
?????????????
????????????? chat.sendMessage("請(qǐng)問(wèn)你收到我的消息了嗎?");//
????????????? /* Message message = new Message("baozhengw9999%hotmail.com@msn.bzwang.cmissoft.com");
????????????? ?? message.setBody("你好!我是個(gè)聊天機(jī)器人!");
????????????? ?? connection.sendPacket(message);
?????? ??? */
?????? ??? System.out.println("發(fā)送完畢...");
????????????? connection.disconnect();
????????????? } catch (Exception ex) {
???????????????????? System.out.println("login error");
????????????? }
?
%>
?
?
發(fā)送成功后,如果suqi用戶打開(kāi)了spark,則spark會(huì)閃爍提示有新消息,打開(kāi)spark,聊天窗口顯示系統(tǒng)用abao用戶發(fā)送的消息,見(jiàn)下圖:
?
?
?
這樣實(shí)現(xiàn)了業(yè)務(wù)系統(tǒng)和即時(shí)通信的無(wú)縫整合,以后應(yīng)該還可以實(shí)現(xiàn)通過(guò)smack編程使內(nèi)網(wǎng)的openfire注冊(cè)用戶向自己的msn好友或QQ好友發(fā)送消息以及接收消息。
?
?
SPARK二次開(kāi)發(fā):
1.準(zhǔn)備工作:
到官網(wǎng)上下載Openfire 3.6.4,并通過(guò)svn下載openfire、Spark和SparkWeb的源代碼
官網(wǎng)地址如下:
http://www.igniterealtime.org/downloads/index.jsp
注意官網(wǎng)上最新的Spark版本是2.5.8,其jdk環(huán)境最好使用1.6的版本。
2.環(huán)境搭建——spark源碼安裝配置
?雙擊openfire_3_6_4.exe進(jìn)行openfire的安裝,安裝過(guò)程很簡(jiǎn)單,不介紹了。
本例的開(kāi)發(fā)環(huán)境是基于Eclipse的。
1)選擇File——New——Project——Java Project。
?????輸入項(xiàng)目工程名spark
???? Contents中選擇?"Create project from existiing source",然后把spark文件所在的文件夾加進(jìn)去.
?
?
?點(diǎn)擊Finish。
?2)生成Spark:
??????點(diǎn)擊Window::Show View::Ant
??????右擊Ant面板,選擇Add Buildfiles
??????展開(kāi)spark::build文件夾,選擇build.xml,點(diǎn)擊"OK"
??????在Ant面板,展開(kāi)Spark,雙擊"release",等一段時(shí)間,會(huì)提示"Build Successful"。
?3)運(yùn)行Spark:
??????點(diǎn)擊Run::Open Debug Dialog...,出現(xiàn)"Run"窗口
??????選擇"Java Application",右鍵點(diǎn)擊"New"按鈕.
??????在"Main"標(biāo)簽頁(yè),將New_configuration換成Spark.
??????點(diǎn)擊Project::Browse按鈕,選擇Spark,再點(diǎn)OK.
??????點(diǎn)擊Main class::Search按鈕,選擇main所在的類org.jivesoftware.launcher.Startup再點(diǎn)擊OK
??????建議勾選Stop in main.
??????點(diǎn)擊Classpath標(biāo)簽頁(yè),選擇User Entries ,使得Advanced..按鈕變的可用.點(diǎn)擊Advanced按鈕.在彈出來(lái)的Advanced Options窗口,選擇Add Folders,再點(diǎn)OK,在Folder Selection窗口選擇spark::src::resources?文件夾,點(diǎn)擊OK
??????選擇Common標(biāo)簽頁(yè),勾選Debug,Run前面的框
??????點(diǎn)擊Apply,再點(diǎn)擊Close
4)在run下選擇spark,運(yùn)行成功!
?
?
?參考文檔:http://www.igniterealtime.org/community/docs/DOC-1040
?
http://wanghaibin0921.blog.163.com/blog/static/36068840201351785643146/
總結(jié)
以上是生活随笔為你收集整理的openfire安装配置完全教程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JNI/NDK开发指南(三)——JNI数
- 下一篇: C++和C#实现剪切板数据交互