在企業即時通信方面,騰訊的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服務器中端口為6000的SDKServer進行通信
2).NET方式通過調用ObjectApi.dll與SDK服務器中端口為8006的AppServer進行通信
3)在開發工作站上,除了將RTX集成相關的鏈接庫文件拷貝到運行時以外,沒有必要將RtxServerApi.ini文件也拷貝過去,更沒必要修改其中的SDK服務器的IP地址和端口,全部在程序中指定即可
4)對於64位的JDK,或者.NET環境,需要特殊處理才行,具體方法見上面的使用說明