1. 程式人生 > >androidpn-server筆記及BUG修改

androidpn-server筆記及BUG修改

上篇講了androidpn的client端,這篇該講一下我使用androidpn-server端的筆記了。

這裡我使用的androidpn是tomcat版的,由不知哪位大神移植並修復了部分bug的版本。地址在:https://github.com/msdx/androidpn/tree/master/androidpn-server-bin-tomcat。直接在eclipse-j2ee中匯入就可以了。

在我fork的這個專案裡,我主要修改了一點小問題。

1、客戶端斷網或關機時,服務端session沒關閉的問題。

參照網上的方法,修改了org/androidpn/server/xmpp/net/XmppIoHandler.java的sessionCreated方法,添加了一句:

session.getConfig().setIdleTime(IdleStatus.BOTH_IDLE, 180);
見:https://github.com/msdx/androidpn/commit/1d654a8459648273df1a1654a5e8d8d7ff37d770

2、log檔名的拼寫錯誤。

這個是在resources/log4j.xml中配置中,把<param name="File" value="../logs/adnroidpn.log" />改為<param name="File" value="../logs/androidpn.log" />即可。

不過後來為了把它的log與tomcat的log區分開來,我又配置為把它們放在logs/androidpn的資料夾裡。修改見:https://github.com/msdx/androidpn/commit/77671ad66f299fbbe0991fece190ed67109b05b0和https://github.com/msdx/androidpn/commit/a661180d169112ea41606ea7ef6c7d59286e5cc6。

3、增加離線訊息傳送和回執處理。此處程式碼修改較多:https://github.com/msdx/androidpn/commit/e41f3b069f63fb571844424498787ffb3ae67c94

此版本的server需對應有傳送回執功能的客戶端,否則會導致服務端每次收到心跳包都會下發它認為對方沒有收到的訊息(由於客戶端未能發給它回執)。客戶端見我另一個專案的更新:APNBB