結合webservice實現dwr推送

2021-09-01 10:10:50 字數 3242 閱讀 4697

情景:

客戶端需要實時提醒服務,比如某個日程已過期的提醒,並且是剛剛過期的時間(所以是實時),

1. 日程物件放在資料庫,由webservice呼叫得到

2. webservice在拿到資料後必須主動把資料給我的主程式端

3. 主程式端在拿到資料後開始推送資料到客戶端

**:

public class checkunsignedbookingjob ", visitbookings.size());

if (!visitbookings.isempty()) ", visitbooking.getbookingnumber());

signoutnoticeservice.visitbookingnotsignouted(visitbooking);}}

listtourbookings = tourbookingservice.getunsignoutedbookinginfo();

log.debug("unsignouted tour booking size: {}", tourbookings.size());

if (!tourbookings.isempty()) ", tourbooking.getbookingnumber());

signoutnoticeservice.tourbookingnotsignouted(tourbooking);}}

log.debug("checkunsignedbookingjob done");

}public void setvisitbookingservice(visitbookingservice visitbookingservice)

public void settourbookingservice(tourbookingservice tourbookingservice)

public void setsignoutnoticeservice(signoutnoticeservice signoutnoticeservice)

}

這是webservice端的乙個job, 由spring定時觸發,看配置:

<?xml version="1.0" encoding="utf-8"?>

execute

0 0/30 * * * ?

這個任務會定時觸發剛那個job的execute方法,在這個方法中,會呼叫webservice端的介面

signoutnoticeservice 中定義的方法,該介面的實現類在我們的主程式端,而不是webservice端。

@webservice

public inte***ce signoutnoticeservice

看主程式端是如何實現webservice這個signoutnoticeservice 介面中的方法並實現推送的

@service("signoutnoticeservice")

@webservice(endpointinte***ce = "com.***.tourbooking.service.signoutnoticeservice")

public class signoutnoticeserviceimpl implements signoutnoticeservice ", signoutnotice.signoutnoticelist.size());

if (signoutnotice.signoutnoticelist.size() > 0) ", notice);

if (notice != null) }}

public void tourbookingnotsignouted(final tourbooking tourbooking) ", signoutnotice.signoutnoticelist.size());

if (signoutnotice.signoutnoticelist.size() > 0) ", notice);

if (notice != null) }}

}

可以看到這個實現類的頭部註解,這個地方是關鍵,webservice端的資料給到了主程式端,雖然我還不明白,哈哈(可能是個長連線)。。。

實現類的方法中,呼叫了主程式端定義的伺服器推送類signoutnotice,這個類實現了dwr的伺服器推送所需要的操作。

public class signoutnotice ;

private collectionsessions = new arraylist();

public signoutnotice()

public void signouttimeoutvisitbookingpopup(string bookid)

public void signouttimeouttourbookingpopup(string bookid)

public void init(string roleid)

public collection filterscriptsessionbyroleid(collectionsessions) }}

return filtersessions;}}

這個類需要在dwr.xml配置檔案中進行配置,作為乙個ajax類,dwr的ajax就不講解了。

要實現dwr的reverseajax,在上面這個類中已經用到了方法util.addfunctioncall("alertsignoutnoticetourbooking", bookid);其中alertsignoutnoticetourbooking就是在頁面上定義的乙個js方法,這個方法實現提醒服務,它是由伺服器端呼叫的,就是說,伺服器端呼叫客戶端的方法。

在客戶端,我們需要進行如下的初始化才能實現dwr的伺服器推送功能:

dwr.engine.setactivereverseajax(true);

signoutnotice.init(roleid);

dwr.engine.setactivereverseajax(true); 這句是dwr實現伺服器推送必不可少的設定。

以前我有寫過乙個簡單的dwr推送demo,可以去參考。

至此,webservice結合dwr實現伺服器推送已經完成的差不多了,在客戶端只要有過期的日程,就會被提醒。

jquery實現呼叫webservice

1 webservice端 using system using system.collections.generic using system.web using system.web.services using system.configuration using system.data.sq...

jquery實現呼叫webservice

1 webservice端 using system using system.collections.generic using system.web using system.web.services using system.configuration using system.data.sq...

nodejs 實現webservice問題總結

node soap soapui 注意args裡引數順序 const soap require soap let url 你的wsdl路徑,可以是url或者本地檔案 注意引數順序!let args promise建立 let client await soap.createclientasync u...