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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM