在企業即時通信方面,騰訊的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.shtml2、在伺服器上安裝完整安裝包中的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環境,需要特殊處理才行,具體方法見上面的使用說明
寵辱不驚,看庭前花開花落;去留無意,望天上雲卷雲舒