[原創] 騰訊RTX二次開發相關的一些注意事項


在企業即時通信方面,騰訊的RTX在國內的占有率應該是很高的

所以,就避免不了要與其他系統進行消息集成

騰訊為此提供了二次開發的工具包,支持JAVA、C#、VB等多種開發語言

但是,目前為止,騰訊官方提供的開發包都是基於X86架構的,這個問題非常頭疼

如果采用JAVA進行集成,並且基於64位的JDK,那么JNI是沒有辦法調用32位的RTX動態鏈接庫的(DLL),會提示“SDK錯誤:連接到SDK服務器錯誤”

我開始時也是遇到了這個問題,嘗試了許久,后來通過EMAIL向官方的技術支持進行詢問,終於在更新了相關的鏈接庫文件后順利解決

在此期間,也嘗試用.Net(C#)進行集成,雖然在兼容性上也會有64位和32位的問題,但可以通過在發布時指定為x86平台的方式解決

如果是WEB項目就更簡單了,可以在應用池里設置32位兼容性選項

下面把集成過程中的一些重點環節進行記錄,用於日后對自己有個交待:

 

1、從RTX官方下載完整安裝包以及SDK開發包:http://rtx.tencent.com/rtx/download/index.shtml

2、在服務器上安裝完整安裝包中的RTX服務端程序:rtxserver2013formal.exe

3、在開發工作站上安裝SDK開發包中的服務端二次開發支持:rtxserversdk2013formal.exe

4、修改服務器端IP地址允許規則:

  (1)采用JAVA方式集成,則修改:安裝盤/Tencent/RTXServer/SDKProperty.xml

    在APIClient下增加子節點:

    <IP>開發工作站IP地址</IP>

  (2)采用.NET方式集成,則修改:安裝盤/Tencent/RTXServer/AppConnConfig.xml

    在APIClient下增加子節點,內容同上

5、如果使用JAVA進行集成(可兼容32/64位環境):

  在開發工作站上,拷貝:安裝盤/Tencent/RTXSSDK目錄下所有的.dll文件,復制到:JDK安裝目錄/bin

  注意:如果使用的是64位的JDK,則還需要下載相應的鏈接庫,分別覆蓋到RTX服務端安裝目錄、System32、SysWOW64以及JDK/bin目錄下。點此下載

  具體開發案例查看:安裝盤/Tencent/RTXSSDK/demo source/server sample/java

  其中的“RTXServer SDK Java語言支持文檔.doc”還是很詳細的

  以下是發送消息提醒的案例代碼,注意其中使用的端口號為:6000

  

import rtx.RTXSvrApi;

//...

RTXSvrApi rtxObj = new RTXSvrApi();
if (rtxObj.Init()) {
    rtxObj.setServerIP("RTXSDK的IP地址");
    rtxObj.setServerPort(6000);
    int iRet = 1;
    try{
        iRet = rtxObj.sendNotify("dong", "中文標題", "中文內容", "0", "0");
    }catch(Exception e){
        System.out.print(e.getMessage());
    }
    System.out.print(iRet);
}
rtxObj.UnInit();

 

6、如果使用.Net進行集成(可兼容32/64位環境):

  在應用中,引用:安裝盤/Tencent/RTXSSDK/demo source/server sample/csharp demo/rootobj/RootObj/bin/Debug/Interop.RTXSAPILib.dll 即可

  該目錄下還有官方提供的很多案例可供參考

  雖然沒有類似JAVA中的說明文檔有些可惜,但在使用上還是很簡單的

  如果開發工作站是64位的操作系統,那么默認情況下還是會出現連接SDK服務器錯誤的問題

  不過可以通過以下兩種方式進行解決:

  1)如果是桌面程序:可以在發布時選擇面向x86平台,即可正常使用

  2)如果是WEB程序:可以在發布到的IIS中,配置所使用應用池的32位兼容選項為true即可正常使用

  以下是發送消息提醒的案例代碼,注意其中使用的端口號為:8006

 

RTXSAPILib.RTXSAPIRootObj RootObj = new RTXSAPILib.RTXSAPIRootObj();
RootObj.ServerIP = "RTXSDK的IP地址";
RootObj.ServerPort = 8006;
try {
    RootObj.SendNotify(rtxId, mTitle, 0, mContent);
} catch (Exception e) {
    throw new Exception(err); //拋出異常
}
return ret;

 

7、注意事項

  1)JAVA方式通過調用SDKAPI.dll與SDK服務器中端口為6000SDKServer進行通信

  2).NET方式通過調用ObjectApi.dll與SDK服務器中端口為8006AppServer進行通信

  3)在開發工作站上,除了將RTX集成相關的鏈接庫文件拷貝到運行時以外,沒有必要將RtxServerApi.ini文件也拷貝過去,更沒必要修改其中的SDK服務器的IP地址和端口,全部在程序中指定即可

  4)對於64位的JDK,或者.NET環境,需要特殊處理才行,具體方法見上面的使用說明

 


免責聲明!

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



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