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