Java EE 7: EJB 釋出 CDI事件透過WebSocket到瀏覽器客戶端

banq發表於2013-06-24
Java EE 7: EJB publishing CDI Events that are pushed over WebSocket to browser client談了如何實現透過EJB釋出事件經過WebSocket管道推送到客戶端瀏覽器。

1.無態會話Bean每3秒定時啟動CDI事件
2.元註解為WebSocket EndPoint 管理的類作為WS 客戶端
3.WebSocket Endpoint觀察CDI事件,是其觀察者,負責將CDI事件釋出到每個WebSocket 客戶端。

如下圖:

Java EE 7: EJB 釋出 CDI事件透過WebSocket到瀏覽器客戶端

大致步驟如下:
建立一個事件物件:

Java EE 7: EJB 釋出 CDI事件透過WebSocket到瀏覽器客戶端

建立一個事件的元註解,用來標註某個傳送事件的方法:

Java EE 7: EJB 釋出 CDI事件透過WebSocket到瀏覽器客戶端

準備工作完成,下面正式開始:
1. 建立事件的傳送者:

Java EE 7: EJB 釋出 CDI事件透過WebSocket到瀏覽器客戶端

2. 建立一箇中間者協調者,用來作為上面事件的消費者(onTimeEvent 方法),同時又是WebSocket事件的消費者,也就是瀏覽器客戶端的消費者(onMessage 方法)。

Java EE 7: EJB 釋出 CDI事件透過WebSocket到瀏覽器客戶端

3.建立瀏覽器客戶端JS程式碼:

Java EE 7: EJB 釋出 CDI事件透過WebSocket到瀏覽器客戶端
html程式碼:

Java EE 7: EJB 釋出 CDI事件透過WebSocket到瀏覽器客戶端
輸出在div id="output"這一行。

執行結果:

Java EE 7: EJB 釋出 CDI事件透過WebSocket到瀏覽器客戶端

相關文章